python有序字典在做题中的使用.

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

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

当不存在公共节点时,返回空节点。

数据范围

链表长度 <span id="MathJax-Span-2" class="mrow"><span id="MathJax-Span-3" class="mo">[<span id="MathJax-Span-4" class="mn">1<span id="MathJax-Span-5" class="mo">,<span id="MathJax-Span-6" class="mn">2000<span id="MathJax-Span-7" class="mo">][1,2000]。
保证两个链表不完全相同,即两链表的头结点不相同。

样例

给出两个链表如下所示:
A:        a1 → a2
                   ↘
                     c1 → c2 → c3
                   ↗            
B:     b1 → b2 → b3

输出第一个公共节点c1






# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None
import collections
class Solution(object):
    memo=collections.OrderedDict()
    def findFirstCommonNode(self, headA, headB):
        """
        :type headA, headB: ListNode
        :rtype: ListNode
        """
        while headA!=None:
            self.memo[headA]=0
            headA=headA.next
        while headB!=None:
            if headB in self.memo:
                return headB
            headB=headB.next
        return None
        

 




posted on 2023-03-19 09:54  张博的博客  阅读(12)  评论(0编辑  收藏  举报

导航