编程之美-编程判断两个链表(可能含环)是否相交以及相交的第一个结点
2015-08-27 21:18
429 查看
第三章 3.6 扩展题
扩展1 : 如何判断两个链表(含环)是否相交
扩展2 : 如何求出两个链表相交的第一个结点
假设两个链表分别为A,B链表
扩展1 :如何判断两个链表(含环)是否相交
解题思路:
(1)先判断AB链表是否含有环,如果不含有环则按照之前的文章 编程之美-判断两个链表是否相交 | Pan Hai nan’Blog 进行;
(2)如果AB链表中有一个链表含有环,而另一个不含环,则可以肯定AB链表不相交;
(3)如果AB链表都含有环,则可以肯定的是如果两个链表相交,那么AB的环肯定是共有的;根据这个特点可以进行这样的判断:找出A链表环中的任意一个结点,然后遍历B链表比较此结点是否在B链表中;如果在,则相交;反之不相交。
扩展2 : 如何求出两个链表相交的第一个结点(这里我们先讨论无环的链表,因为有环的链表不是很好判断相交的第一个结点位置)
解题思路:
(1)先遍历得出AB链表的表长,这是其实两个指针指向AB链表的尾部,我们可以先进行判断尾结点是否相等,相等则AB链表相交,否则不相交,就不用进行后续步骤了;
(2)假设A链表的长度大一些,然后先遍历A链表Length(A)-Length(B)步,此时A链表剩下的没有遍历的长度正好和B链表的表长度相等;
(3)同时遍历A链表剩下的结点和B链表所有结点,并进行比较,如果在遍历过程中找到了两个相等的结点,则此结点就是AB链表相交的第一个结点。
这里就讲到这吧,有环的两个链表判断相交的第一个结点位置目前还没有思绪,有思绪了再补上。
扩展1 : 如何判断两个链表(含环)是否相交
扩展2 : 如何求出两个链表相交的第一个结点
假设两个链表分别为A,B链表
扩展1 :如何判断两个链表(含环)是否相交
解题思路:
(1)先判断AB链表是否含有环,如果不含有环则按照之前的文章 编程之美-判断两个链表是否相交 | Pan Hai nan’Blog 进行;
(2)如果AB链表中有一个链表含有环,而另一个不含环,则可以肯定AB链表不相交;
(3)如果AB链表都含有环,则可以肯定的是如果两个链表相交,那么AB的环肯定是共有的;根据这个特点可以进行这样的判断:找出A链表环中的任意一个结点,然后遍历B链表比较此结点是否在B链表中;如果在,则相交;反之不相交。
扩展2 : 如何求出两个链表相交的第一个结点(这里我们先讨论无环的链表,因为有环的链表不是很好判断相交的第一个结点位置)
解题思路:
(1)先遍历得出AB链表的表长,这是其实两个指针指向AB链表的尾部,我们可以先进行判断尾结点是否相等,相等则AB链表相交,否则不相交,就不用进行后续步骤了;
(2)假设A链表的长度大一些,然后先遍历A链表Length(A)-Length(B)步,此时A链表剩下的没有遍历的长度正好和B链表的表长度相等;
(3)同时遍历A链表剩下的结点和B链表所有结点,并进行比较,如果在遍历过程中找到了两个相等的结点,则此结点就是AB链表相交的第一个结点。
这里就讲到这吧,有环的两个链表判断相交的第一个结点位置目前还没有思绪,有思绪了再补上。
相关文章推荐
- php设计模式专题附源码(解释器模式、工厂方法模式、外观模式、装饰模式、建造者模式)
- 编程之美-判断两个链表是否相交
- c#—细说多线程(2)
- 编程之美-从无头单链表中删除节点
- java导出pdf文档
- asp.net mvc htmlhelper扩展
- 编程之美-字符串移位包含的问题
- [leetcode-200]Number of Islands(java)
- 基于七牛Python SDK写的一个批量下载脚本
- 电阻电路分析(基于MATLAB)
- java Cookie详解
- ASP.Net的两种开发模式
- Junit(1)在Eclipse中使用JUnit4进行单元测试
- Metasploit(四)--Msfpayload命令
- [C++11 并发编程] 13 使用期望等待一次性事件
- [leetcode]Contains Duplicate C语言
- chart控件基本使用——C#
- c#—细说多线程(1)
- JAVA模板 Java做acm所需要的基础知识之排序问题
- java模板 Java做acm所需要的基础知识之基本输入输出问题