Python中两个链接列表的交集

假设我们有两个链接列表A和B,则这些链接列表中的元素很少。我们必须返回交点的参考。输入的交集为Val = 8,A = [4,1,8,4,5],B = [5,0,1,8,4,5],skipA = 2和skipB = 3,这些用于跳过A中有2个元素,B中有3个元素。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个名为d的图

  • 而headA不为null

    • d [headA]:= 1

    • headA:= headA的下一个

  • 而headB不为null

    • 返回头B

    • 如果headB在d

    • 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'