题目在这:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
题目分析:
要仔细看题目,题目中要求的是:‘请你找出并返回两个单链表相交的起始节点’ 。而不是节点所指向的值。
题目是想要找到相交节点的指针~ 其次节点的val是可以重复出现的,仅仅比较val是会出错的。
思路分析:
有一个方法,就是A指针指向第一个链表,B指针指向第二个链表,两个指针同时向后移动。
若A指针已经指向第一个链表最后一个了,则下一步就去第二个链表的开头。
同理B指针已经指向第二个链表的最后一个了,则下一步就取第一个链表的开头。
链表问题 还是看图来得快
看图!!!!!
有了上面的算法,代码写起来也很容易了.
A, B = headA,headB
while A!= B: # 若不相交 则最后会都跑到null了
if A:
A = A.next
else:
A = headB
if B:
B = B.next
else:
B = headA
return
可以理解成两个人速度一致, 走过的路程一致。那么肯定会同一个时间点到达终点。