Intersection of Two Linked Lists in Python


Suppose we have two linked lists A and B, there are few elements in these linked lists. We have to return the reference of the intersection points. The inputs are intersectionVal = 8, A = [4,1,8,4,5], B = [5,0,1,8,4,5], skipA = 2 and skipB = 3, these are used to skip 2 elements from A and skip 3 elements from B.

To solve this, we will follow these steps −

  • Define a map called d
  • while headA is not null
    • d[headA] := 1
    • headA := next of headA
  • while headB is not null
    • if headB in d
      • return headB
    • headB := next of headB
  • Return null

Example

Let us see the following implementation to get better understanding −

 Live Demo

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)

Input

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))

Output

Intersected at '8'

Updated on: 28-Apr-2020

864 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements