两个链表的第一个公共节点
来源:互联网 发布:金山数据恢复 编辑:程序博客网 时间:2024/06/13 22:42
已知有两个链表,他们可能相交于某一点,求出该点。
方法1.对于第一个链表,每访问一个节点,对该节点做标记。访问第二个链表,如果该元素已经访问,则第一个这样的元素就是所求点。
由于两个链表都访问了一遍,因此时间复杂度O(m+n),空间复杂度O(m)或O(n)
方法2.我们定义节点的距离为节点到链表开始所经过的节点数。如果两个链表长度相同,则相交节点其在两个链表上的距离一定相等。对于长度不同的两个链表,我们可以采用对齐的方式,使其向长度短的链表对齐。这样就可以应用上面的思路。具体算法如下:
算法的空间复杂度O(1),时间复杂度O(m+n),效果不错吧。
如果链表中有环会怎么样呢?
上面的算法会死循环的。在求解链表长度的时候就会死循环了。但是这样的问题该如何解决呢。
首先的解决访问带环链表的问题。如果访问带环链表访问解决了,那么使用方法一就可以解决原问题,但是能不用优化到算法二的空间复杂度呢。算法二的思路还是很可取的,这里可不可以继续使用呢?
我们定义链表的长度为链表中节点的个数,如果链表相交,应该还是具有算法二的性质。因此,修改求取链表长度的算法,使用算法二。具体算法如下:
0 0
- 两个链表的公共第一个公共节点
- 找到两个单向链表的第一个公共节点
- 找到两个单向链表的第一个公共节点
- 找到两个单向链表的第一个公共节点
- 两个单向链表的第一个公共节点
- 两个链表的第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 两个链表的第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 两个链表的第一个公共节点
- 两个链表的第一个公共节点
- 找出两个链表的第一个公共节点
- (LeetCode)两个链表的第一个公共节点
- 37 - 两个链表的第一个公共节点
- 两个链表的第一个公共节点
- 剑指offer-两个链表的第一个公共节点
- 两个链表的第一个公共节点
- 七个习惯
- 启动另外一个app
- 例说Hausdorff距离
- 将数组转为List的方法,转换后不可执行List的哪些操作?
- windows或者linux下执行java程序(.jar)
- 两个链表的第一个公共节点
- SPARK dataframe 两个表操作
- 在Eclipse里面怎么读取当前包下1个txt文件的路径
- LeetCode 147 Insertion Sort List
- 蓝桥杯历届试题——国王的烦恼(并查集)
- 《ACM程序设计》书中题目 K
- 使用Chipscope时如何防止reg_wire型信号被优化掉
- 二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值
- Android处理图片报OOM的问题解决