输入两个链表,找出它们的第一个公共节点。

如下面的两个链表:

在节点 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 个节点。

示例 3:

输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:null
输入解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
解释:这两个链表不相交,因此返回 null。

注意:

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

代码:

/**

* Definition for singly-linked list.

* public class ListNode {

*     int val;

*     ListNode next;

*     ListNode(int x) {

*         val = x;

*         next = null;

*     }

* }

*/

public class Solution {

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {

ListNode p,q;

p = headA;

q = headB;

while(p!=null&&q!=null)

{

p = p.next;

q = q.next;

}

ListNode a,b;

a = headA;

b = headB;

while(p!=null)

{

p = p.next;

a = a.next;

}

while(q!=null)

{

q = q.next;

b = b.next;

}

while(a!=null&&b!=null)

{

if(a == b)

{

return a;

}

a = a.next;

b = b.next;

}

return null;

}

}

【剑指offer】面试题52:两个链表的第一个公共节点(java)相关推荐

  1. 剑指offer面试题52. 两个链表的第一个公共节点(双指针法)

    题目描述 输入两个链表,找出它们的第一个公共节点. 思路 详见链接 代码 class Solution:def getIntersectionNode(self, headA:ListNode, he ...

  2. 剑指Offer+第37题+两个链表的第一个公共节点+java

    题目:输入两个链表,找出它们的第一个公共结点. 面试的时候碰到这道题,很多应聘者的第一反应就是蛮力法:在第一链表上顺序遍历每个结点,没遍历到一个结点的时候,在第二个链表上顺序遍历每个结点.如果在第二个 ...

  3. 剑指offer面试题[37]-两个链表的第一个公共结点

    题目描述 输入两个链表,找出它们的第一个公共结点. /* struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), ...

  4. 剑指offer(C++)-JZ52:两个链表的第一个公共结点(数据结构-链表)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空.(注意因 ...

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

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

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

    题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不 ...

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

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

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

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

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

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

最新文章

  1. Atitit.研发管理---api版本号策略与版本控制
  2. Git之深入解析凭证存储
  3. 大数据、java、python、区块链、人工智能哪个发展前景更好?
  4. Hi3515的开发板 Hi3515 SDK编译出错 提示缺少libpciv.a的解决办法
  5. 【数据库题型大总结】名词解释总结
  6. linux中head下的所有参数,Linux 命令之head 命令使用
  7. 与神经网络相比,你对P图一无所知
  8. 打开终端报错:bash: /某路径/bashrc: No such file or directory
  9. teechart for java_TeeChart控件Java版
  10. Daily reflection|腾讯云测评第一阶段汇报
  11. jquery广告浮动插件
  12. 邮件开发:邮件作用、邮件服务器、电子邮箱与邮件客户端软件
  13. c语言静态变量的特点,静态变量有什么特点
  14. Docker容器安装Mysql8
  15. Valley Numer
  16. 半监督语义分割_paper reading part2
  17. iOS设备录制屏幕视频
  18. C语言_函数(Function)
  19. 交通数字孪生高速公路规划设计市政道路BIM正向改扩建设计利用实景三维无人机机载LiDAR倾斜摄影车载地面三维激光扫描仪LiDAR点云数据提取自动驾驶高精地图三维矢量车道标线3d点云标注
  20. C语言计算5+55+555+5555+55555

热门文章

  1. 程序员面试金典 - 面试题 17.25. 单词矩阵(Trie树+DFS回溯,hard)
  2. 判断深度学习模型的稳定性_全自动搭建定制化深度学习模型
  3. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源
  4. 爬虫最基本的工作流程:内涵社区网站为例
  5. java流的传递方式是_java中数据的传递方式到底是怎样的!
  6. Matplotlib - 散点图 scatter() 所有用法详解
  7. 桩筏有限元中的弹性板计算_采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数 -...
  8. Spring Cloud Alibaba基础教程:使用Nacos作为配置中心
  9. 最全BAT前端开发面试80题:算法+html+js+css!含答案大赠送!
  10. 论文浅尝 | 基于知识库的自然语言理解 03#