题目

判断两个有环链表是否相交,相交则返回第一个相交节点,否则返回null

在考虑此问题时,根据前面几篇文章的解法,我们已经得到了各自链表的入环节点,分别为loop1和loop2


思路

以下是问题三的具体解决过程:

  1. 如果loop1==loop2,我们只需要考虑从链表1的头节点head1到loop1这一段与从链表2的头节点head2到loop2这一段中,在哪里第一次相交,这与问题二,前面一篇文章类似。
  2. 如果loop1!=loop2,两个链表有可能相交,也有可能不相交;不相交的情况很好理解,相交的情况就是链表一和链表二共有一个环,但是入环节点不是同一个节点。
  3. 为了判断当loop1!=loop2是哪一种情况,让链表1从loop1出发,如果之后没有遇到loop2并且回到loop1的话,就说明不相交,否则就是相交, 此时返回loop1和loop2都可以。

源码

public class Node{public int value;public Node next;public Node(int data){this.value=data;}
}
public Node bothLoop(Node head1, Node loop1, Node head2,Node loop2){Node cur1=null;Node cur2=null;if(loop1==loop2){cur1=head1;cur2=head2;int n=0;while(cur1!=loop1){n++;cur1=cur1.next;}while(cur2!=loop2){n--;cur2=cur2.next;}cur1=n>0?head1:head2;cur2=cur1==head1?head2:head1;n=Math.abs(n);while(n!=0){n--;cur1=cur1.next;}while(cur1!=cur2){cur1=cur1.next;cur2=cur2.next;}return cur1;}else{cur1=loop1.next;while(cur1!=loop1){if(cur1==loop1){return loop1;}cur1=cur1.next;}return null;}
}

链表问题11——两个单链表相交的系列问题(三):判断两个有环链表是否相交相关推荐

  1. 链表问题11——两个单链表相交的系列问题(二):找到两个无环链表的交点

    题目 判断两个无环链表是否相交,相交则返回第一个相交节点,否则返回null 思路 分别遍历链表1和链表2,最后一个节点分别即为end1和end2,长度分别记为len1和len2 如果end1不等于en ...

  2. 链表问题11——两个单链表相交的系列问题(四):总结

    题目 请实现一个函数,如果两个链表相交,请返回相交的第一个节点,如果不相交,返回null即可.链表可能有环或无环. 要求 如果链表1的长度为N,链表2的长度为M,时间复杂度达到O(M+N),额外空间复 ...

  3. 链表问题11——两个单链表相交的系列问题(一):找到有环链表的环入口节点

    题目 判断一个链表是否有环,如果有,则返回第一个进入环的节点,没有则返回null. 思路 如果一个链表没有环,那么遍历链表一定可以遇到链表的终点:如果链表有环,那么遍历链表就永远在环里转下去了.如何找 ...

  4. 左神算法:两个单链表相交的一系列问题(链表是否有环 / 两无环链表是否相交 / 两有环链表是否相交)

    本题来自左神<程序员代码面试指南>"两个单链表相交的一系列问题"题目. 题目 在本题中,单链表可能有环,也可能无环.给定两个单链表的头节点 head1 和 head2, ...

  5. 两个单链表相交的一系列问题

    两个单链表相交的一系列问题 在本题中,单链表可能有环,也可能无环.给定两个单链表的头节点 head1 和 head2,这两个链表可能相交,也可能 不相交.请实现一个函数,如果两个链表相交,请返回相交的 ...

  6. 两个单链表相交的一系列问题-Java

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...

  7. 算法题:求两个单链表相交的第一个节点

    目录 一.题目 思路 代码 二.总结 一.题目 #include <iostream> #include <stack> using namespace std; //链表结点 ...

  8. 两个单链表相交的一系列问题----0_0

    这道题emmm,难度相对来说很大额. 主要是要分成三种情况来考虑: 1. 两个链表都无环: 2. 两个链表都有环: 3. 一个有环一个无环,这种情况是不用 考虑的,一定没有交点(姥姥记住:单链表仅有一 ...

  9. 算法学习18-两个单链表相交的一系列问题

    两个单链表相交的一系列问题 [题目] 在本题中,单链表可能有环,也可能无环.给定两个单链表的头节点 head1和head2,这两个链表可能相交,也可能不相交.请实现一个函数, 如果两个链表相交,请返回 ...

最新文章

  1. mysql分析表增删改统计_MySQL增删改查|附思维导图
  2. shiro整合ehcache
  3. 配置单节点伪分布式Hadoop
  4. k8s拉取私有仓库镜像:通过config.json文件或命令行来创建secret(docker-registry)
  5. linux mysql 单机主从_MariaDB单机双实例主从复制
  6. apache 设置404 页面_SpringBoot自定义错误页面
  7. JavaFX UI控件教程(二十二)之Titled Pane和Accordion
  8. php怎么设置网站的字符编码,php如何设置字符编码
  9. docker 搭建mysql 连接不上_docker搭建MySQL主从集群
  10. 产业链人士:LCD显示驱动芯片价格有望趋于稳定
  11. 杭电4510为什么时光不能倒流
  12. ASP.NET页面生命周期和asp.net应用程序生命周期
  13. html 双 直线 公文,公文格式标准页面设置
  14. AHCI和IDE的区别,如何在AHCI模式下安装系统
  15. 计算机无法启动打印服务,电脑重启print spooler服务无法启动怎么处理
  16. Python(高级FTP作业)
  17. 【重磅】云栖社区2017年度内容特辑
  18. 拉里·埃里森和历史上最牛的演讲【转】
  19. Linux中部署Spring Cloud项目
  20. STM32两轮自平衡小车(学习记录)——MPU6050

热门文章

  1. 李彦宏首次公布24字百度愿景,要做最懂用户的公司
  2. 从15000个Python开源项目中精选的Top30,Github平均star为3707,赶紧收藏!
  3. Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
  4. 网络常见的 9 大命令,非常实用!
  5. 剑指offer_第7题_斐波那契数列
  6. 自动检索、修复Python代码bug,微软推出DeepDebug
  7. 25岁Nature狂魔八连杀!曹原再次“一作+通讯”发Nature!
  8. 【收藏】北美大厂性价比大全
  9. 导师:寒假复现几篇顶会论文?答:3天1篇!
  10. 大陆唯一7nm光刻机被抵押!武汉千亿投资、台积电大牛掌舵的芯片项目官宣停摆...