剑指 链表公共节点
两个链表的第一个公共结点
http://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46
因为两个链表长度可能不相等,所以不能仅仅一个一个节点的遍历链表找到相同节点。但是a+b=b+a 可以把两个链表连接起来,这样就算是公共长度,所以长度相等。于是,当某一个链表的遍历节点为空的时候,就把他置为另一个链表的头部。这样遍历出来的结果就是公共节点
# 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 ): # write code here if not pHead1 or not pHead2: return None p1=pHead1 p2=pHead2 while p1!=p2: if p1==None: p1=pHead2 else: p1=p1.next if p2==None: p2=pHead1 else: p2=p2.next return p1