链表相交问题
来源:互联网 发布:php get class method 编辑:程序博客网 时间:2024/05/18 12:32
来说说链表相交问题。
假设有链表L1和L2,长度分别为N1,N2
1.相交判断
(1)遍历L1,对每一个节点的地址,建立哈希set,然后遍历L2,判断L2节点在不在哈希set中。
时间复杂度:o(N1 + N2/2)
空间复杂度:o(N1)
优点:可以顺便定位交点。
缺点:需要空间复杂度。
(2)都找到最后一个节点,然后判断最后一个节点是否一样即可。
如果维护一个尾节点的变量的话,这个查找复杂度,就是常量。不然需要遍历两个链表。
优点:无需空间,如果维护尾节点,效率极高。不维护,也比较快。
缺点:无法定位相交点。
(3)L1尾节点连到L1的首节点,然后判断L2是否有环。判断方法为,设置两个指针,一个移动慢,一个移动快。快的每移动一步,都和慢的指针,比较。
注意:还有一种判断有环的方法,就是将链表地址放入一个map,使用[]放入元素,然后判断返回值,看是否为false,如果是false就有环。
这样还能找到环是从哪里开始的。
2.交点定位
(1)1中的(1)
(2)比较两个链表长度,然后让长的先移动差值,然后两个一起移动,每次移动比较。
(2)比(1)的优点是,无需空间复杂度。
3.有环链表
判断相交,可以采用,追嘛,肯定两个都会进入环,然后一快一慢就能追上。
0 0
- 链表相交问题
- 链表相交问题
- 链表相交问题
- 链表相交问题
- 链表相交问题
- 链表相交问题
- 链表相交问题
- 链表相交问题
- 链表相交问题
- 两单向链表相交问题
- 环链表、相交链表的问题
- 链表相交与有环问题
- 两单向链表相交问题
- 编程之美----链表相交问题
- 链表的相交与环问题
- 两个链表是否相交问题
- 链表的相交、环问题
- 编程之美----链表相交问题
- C语言atexit()函数
- 贪心算法总结
- nginx的sbin和conf文件不在同一目录怎么装安全狗
- Java 反射---获取Class的三种方式
- leetcode 172. Factorial Trailing Zeroes
- 链表相交问题
- C语言基础
- iOS开发学习笔记——文本框(UITextField)及键盘遮挡处理和回收
- Java反射——动态加载类
- 2133232
- 开发Flex for Android第一个ANE(ActionScript Native Extensions)本地扩展
- python 模块 chardet下载方法及介绍
- bzoj 1497(最小割,最大权闭合子图)
- Android ORM 数据库的使用