双指针写法:借用题解区Dylan的图。

alt

(1)有共同节点的情况:

1->2->3->6->7->4->5->6->7

4->5->6->7->1->2->3->6->7

在6相遇

(2)没有共同节点的情况:{1,2,3},{4,5},{}

1->2->3->4->5

4->5->1->2->3

在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 ):
        a=pHead1
        b=pHead2
        
        while a!=b:
            if a!=None:
                a=a.next
            else:
                a=pHead2
            if b!=None:
                b=b.next
            else:
                b=pHead1
        return a##在没有交点的时候,两个链表最后都会出现都是None值