美文网首页
面试题52. 两个链表的第一个公共节点

面试题52. 两个链表的第一个公共节点

作者: 周英杰Anita | 来源:发表于2020-05-07 16:14 被阅读0次

    输入两个链表,找出它们的第一个公共节点。

    思路:

    我们使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结点遍历,当 node1 到达链表 headA 的末尾时,重新定位到链表 headB 的头结点;当 node2 到达链表 headB 的末尾时,重新定位到链表 headA 的头结点。
    
    这样,当它们相遇时,所指向的结点就是第一个公共结点。
    

    python3解法:

    # -*- coding:utf-8 -*-
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    class Solution:
        def FindFirstCommonNode(self, pHead1, pHead2):
            # write code here
            p1= pHead1
            p2= pHead2
            while p1 != p2:
                p1 = p1.next if p1 else pHead2
                p2 = p2.next if p2 else pHead1
            return p1
    
    

    参考:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/solution/shuang-zhi-zhen-fa-lang-man-xiang-yu-by-ml-zimingm/

    相关文章

      网友评论

          本文标题:面试题52. 两个链表的第一个公共节点

          本文链接:https://www.haomeiwen.com/subject/cxeaghtx.html