思路:如果两个列表长度相等,则可以使用双指针遍历两个链表。
知识点:1+2=2+1
链表1:1--2--3--4--8--5--1 游标a
链表2:2--4--8--5--1 游标b
a轮询路径 链表1的 1--2--3--4--8--5--1--链表2的2--4--8
b轮询路径 链表2的 2--4--8--5--1--链表1的1--2--3--4--8
发现只要分别同时轮询1+2和2+1,总是能找到公共节点并返回;如果没有公共点,则两个游标最终指向None,退出循环并返回。
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # # @param pHead1 ListNode类 # @param pHead2 ListNode类 # @return ListNode类 # class Solution: def FindFirstCommonNode(self , pHead1 , pHead2 ): cur1=pHead1 cur2=pHead2 while (cur1!=cur2): cur1=cur1.next if cur1 else pHead2 cur2=cur2.next if cur2 else pHead1 return cur1