Python 中兩個連結串列的交集


假設我們有兩個連結串列 A 和 B,這些連結串列中含有一些元素。我們需要返回交集元素的引用。輸入為 intersectionVal = 8,A = [4,1,8,4,5],B = [5,0,1,8,4,5],skipA = 2 和 skipB = 3,這些用於從 A 中跳過 2 個元素,從 B 中跳過 3 個元素。

為了解決此問題,我們將按照以下步驟操作:

  • 定義一個名為 d 的對映
  • 在 headA 不為空時
    • d[headA] := 1
    • headA := headA 的下一個
  • 在 headB 不為空時
    • 如果 headB 在 d 中
      • 返回 headB
    • headB := headB 的下一個
  • 返回 null

示例

讓我們看看以下實現以獲得更好的理解:

 即時演示

class ListNode:
   def __init__(self, data, next = None):
      self.data = data
      self.next = next
class Solution(object):
   def getIntersectionNode(self, headA, headB):
      """
      :type head1, head1: ListNode
      :rtype: ListNode
      """
      dict = {}
      while headA:
         dict[headA]=1
         headA = headA.next
      while headB:
         if headB in dict:
            return headB
         headB = headB.next
      return None
headA = ListNode(4)
headB = ListNode(5)
Intersect = ListNode(8, ListNode(4, ListNode(5)))
headA.next = ListNode(1, Intersect)
headB.next = ListNode(0, ListNode(1, Intersect))
ob1 = Solution()
op = ob1.getIntersectionNode(headA, headB)
print("Intersection:",op.data)

輸入

headA = ListNode(4)
headB = ListNode(5)
Intersect = ListNode(8, ListNode(4, ListNode(5)))
headA.next = ListNode(1, Intersect)
headB.next = ListNode(0, ListNode(1, Intersect))

輸出

Intersected at '8'

更新於:2020 年 4 月 28 日

972 次觀看

開啟您的職業生涯

完成課程,獲得認證

立即開始
廣告