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

  •    题目
  •    提交记录
  •    讨论
  •    题解
  •    视频讲解

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

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

数据范围

链表长度 <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
        
————————
  •    题目
  •    提交记录
  •    讨论
  •    题解
  •    视频讲解

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

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

数据范围

链表长度 <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