双指针思路,设置两个指针,分别遍历链表,遍历完第一条链表之后,开始遍历另一条链表,如果相交,就会在相同的节点处相遇,如果不相交则都会走到尾节点处。空间复杂度要优于用set集合的方式
# 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 ): if not pHead1&nbs***bsp;not pHead2: return None # write code here p1 = pHead1 p2 = pHead2 while p1 != p2: if p1: p1 = p1.next else: p1 = pHead2 if p2: p2 = p2.next else: p2 = pHead1 return p1