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