কম্পিউটার

পাইথনে দুটি লিঙ্কযুক্ত তালিকার ছেদ


ধরুন আমাদের দুটি লিঙ্কযুক্ত তালিকা 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টি উপাদান এড়িয়ে যান।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ডি নামে একটি মানচিত্র সংজ্ঞায়িত করুন
  • যদিও headA শূন্য নয়
    • d[headA] :=1
    • headA :=headA এর পরবর্তী
  • যদিও headB শূন্য নয়
    • যদি d
        এ headB হয়
      • রিটার্ন হেডবি
    • headB :=headB এর পাশে
  • শূন্য রিটার্ন করুন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

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'

  1. C++ এ দুটি লিঙ্ক করা তালিকার ছেদ

  2. জাভাতে দুটি লিঙ্কযুক্ত তালিকার ছেদ বিন্দু খুঁজুন

  3. পাইথনে লিঙ্ক করা তালিকার মধ্যে মার্জ করার জন্য প্রোগ্রাম

  4. পাইথন ব্যবহার করে লিঙ্কযুক্ত তালিকা হিসাবে দেওয়া দুটি বহুপদ যোগ করার প্রোগ্রাম