- 对于链表长度一样大的情况,两个链表各遍历走一遍就知道是否有公共解
- 对于长度不一样的,当一个链表走到末尾,它的下一个接着另一个链表的头开始走,另一个也做同样的操作。如果两个链表有相同的节点,在第二轮遍历中会相遇。
class Solution: def FindFirstCommonNode(self , pHead1 , pHead2 ): # write code here # 长度相同有公共结点,第一次就遍历到;没有公共结点,走到尾部NULL相遇,返回NULL # 长度不同有公共结点,第一遍走完长度的差值就出来了,第二遍一起到公共结点;没有公共,第二遍一起到结尾NULL。 p1 = pHead1 p2 = pHead2 while p1 != p2: if not p1: p1 = pHead2 else: p1 = p1.next if not p2: p2 = pHead1 else: p2 = p2.next return p1