剑指 链表公共节点

两个链表的第一个公共结点

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
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务