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 的下一個
- 如果 headB 在 d 中
- 返回 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'
廣告