题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧:

考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!
题目传送门: 两个链表的第一个公共节点
题目描述:
输入两个链表,找出它们的第一个公共节点。

如下面的两个链表:

在节点 c1 开始相交。
示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
示例 2:

输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Reference of the node with value = 2
输入解释:相交节点的值为 2 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。
注意:

  • 如果两个链表没有交点,返回 null.
  • 在返回结果后,两个链表仍须保持原有的结构。
  • 可假定整个链表结构中没有循环。
  • 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。

思路:

用的双指针做法(个人感觉十分优雅)

我们同时操作两个链表

我们需要考虑两种情况:第一种情况是两个链表相交,第二种情况是两个链表不相交

情况1:两个链表相交时

情况二:两个链表不相交时,分析过程和上面的一样,这里不再重复了

我们来看看成功AC的代码吧:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* A = headA;ListNode* B = headB;if(headA==NULL||headB==NULL) return NULL;while(A!=B){A=A==NULL?headB:A->next;B=B==NULL?headA:B->next;}return A;}
};

谢谢你的阅读,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!

剑指 Offer 52. 两个链表的第一个公共节点相关推荐

  1. 【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点

    [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 文章目录 [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 一.双指针 一.双指针 设 "第一个 ...

  2. 【Java】剑指 Offer 52. 两个链表的第一个公共节点

    题目 :输入两个链表,找出它们的第一个公共节点. 算法思路 : 首先我们要明确,两个链表相交,是Y形状的 两个链表相交,是next域相同 因为两个单链表的长度是不一样的,所以我们需要让长的那个链表,引 ...

  3. 剑指 Offer 52. 两个链表的第一个公共节点(C语言)

    *输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = ...

  4. 【算法】剑指 Offer 52. 两个链表的第一个公共节点

    文章目录 1.概述 2. 有序 3. 循环 4. set集合 1.概述 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交.

  5. 剑指 Offer 52—— 两个链表的第一个公共节点

    题目链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 输入两个链表 ...

  6. LeetCode-剑指 Offer 52. 两个链表的第一个公共节点

    剑指 Offer 52. 两个链表的第一个公共节点 思路一:用set容器,不符合题意 /*** Definition for singly-linked list.* struct ListNode ...

  7. 《剑指offer》两个链表的第一个公共节点

    题目:输入两个链表,找出它们的第一个公共结点. 解析:暴力更直接.直接遍历两个链表分别存储到list1.list2,然后在list1和list2中找公共节点就好了 /* public class Li ...

  8. 剑指Offer之两个链表的第一个公共节点

    题目描述 输入两个链表,找出它们的第一个公共结点. 解题思路 首先,如果都是空链表,那么肯定返回空.两个单链表假设有公共节点,那么肯定是"Y"字型的. 先计算两个链表的长度,求出长 ...

  9. 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点

    一.两个链表的第一个公共结点: 1.题目: 输入两个链表,找出它们的第一个公共结点. 2.解题思路: (1)第一种:找出两个链表的长度,然后让长的链表先走两个链表的长度差,接着两个链表一起走. (2) ...

最新文章

  1. ActiveMQ与xml rpc
  2. 数据导入HBase最常用的三种方式及实践分析
  3. F - Monkey Banana Problem
  4. 鞋带的超炫系法-真是门艺术[转载]
  5. [YTU]_2018 ( 约瑟夫问题)
  6. Sublime Text 3 快捷键总结
  7. abs std::abs_ABS的完整形式是什么?
  8. php 替换某个字符,php中如何替换字符串中的某个字符-PHP问题
  9. 李开复-如果你已经过了20岁但还不到25岁
  10. Mysql8.0 15安装后怎么打开_mysql-8.0.15-winx64 解压版安装 图文详解
  11. 相似度计算 java_Java基于余弦方法实现的计算相似度算法示例
  12. eclipse svn插件安装_eclipse 2020-03 (4.15.0) SVN 插件在线安装教程
  13. 惠普z800工作站bios设置_HP工作站BIOS说明书适用Z228Z440Z230Z640Z840Z800Z620Z420Z820主板设置.doc...
  14. ubuntu使用Firefox无法播放视频
  15. drawio中添加数学公式
  16. 想要成功,你得像剥洋葱一样一层一层地撕开自己
  17. 看最强大脑中英PK小记
  18. 复制一个维基百科!—— 维基技术梳理
  19. Simulink 环境基础知识(二十六)--信号基础知识
  20. jQuery基础二DOM操作

热门文章

  1. ubuntu 主题美化和 软件推荐,qq最新版安装
  2. SwiftUI:仿iWatch运动
  3. Oracle19客户端下载安装步骤
  4. java 为什么包装类_Java中为什么需要基本类型包装类?
  5. 基于点云的语义单目SLAM
  6. edius6视频实用教程
  7. 14个开源免费的人工智能项目,人脸识别依旧很受欢迎
  8. 【详解Anaconda 、多环境安装多个不同python版本以及根据需要切换python版本】
  9. 增量式PID算法控制房间温度变化的简单例子及python程序
  10. 华为设备二层协议透明传输命令