কম্পিউটার

পাইথনে একটি সাজানো ডাবললি লিঙ্কড তালিকায় প্রদত্ত পণ্যের সাথে জোড়া খুঁজুন


ধরুন আমাদের কাছে অনন্য ধনাত্মক সংখ্যার একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা রয়েছে; আমাদের দ্বিগুণ লিঙ্কযুক্ত তালিকায় জোড়া খুঁজে বের করতে হবে যার পণ্য একটি প্রদত্ত মান x এর মতো। আমাদের মনে রাখতে হবে যে, এটি কোনো অতিরিক্ত স্থান ব্যবহার না করেই সমাধান করা হবে।

সুতরাং, যদি ইনপুটটি হয় L =1 ⇔ 2 ⇔ 4 ⇔ 5 ⇔ 6 ⇔ 8 ⇔ 9 এবং x =8, তাহলে আউটপুট হবে (1, 8), (2, 4)

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

  • curr :=head, nxt :=head

  • যখন nxt.next নয়, None is non-zero, do

    • nxt :=nxt.next

  • পাওয়া গেছে :=মিথ্যা

  • যখন curr এবং nxt null নয় এবং curr এবং nxt আলাদা এবং nxt.next curr নয়, করবেন

    • যদি (curr.data * nxt.data) x এর মতো হয়, তাহলে

      • পাওয়া গেছে :=সত্য

      • একটি জোড়া curr.data, nxt.data

        প্রদর্শন করুন
      • curr :=curr.next

      • nxt :=nxt.prev

    • অন্যথায়,

      • যদি (curr.data * nxt.data)

        • curr :=curr.next

      • অন্যথায়,

        • nxt :=nxt.prev

  • যদি পাওয়া যায় মিথ্যা, তাহলে

    • "পাওয়া যায়নি"

      প্রদর্শন করুন

উদাহরণ

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

class ListNode:
   def __init__(self, data):
      self.data = data
      self.prev = None
      self.next = None
def insert(head, data):
   node = ListNode(0)
   node.data = data
   node.next = node.prev = None
   if (head == None):
      (head) = node
   else :
      node.next = head
      head.prev = node
      head = node
   return head
def get_pair_prod(head, x):
   curr = head
   nxt = head
   while (nxt.next != None):
      nxt = nxt.next
   found = False
   while (curr != None and nxt != None and curr != nxt and nxt.next != curr) :
      if ((curr.data * nxt.data) == x) :
         found = True
         print("(", curr.data, ", ", nxt.data, ")")
         curr = curr.next
         nxt = nxt.prev
      else :
         if ((curr.data * nxt.data) < x):
            curr = curr.next
         else:
            nxt = nxt.prev
   if (found == False):
      print( "Not found")
head = None
head = insert(head, 9)
head = insert(head, 8)
head = insert(head, 6)
head = insert(head, 5)
head = insert(head, 4)
head = insert(head, 2)
head = insert(head, 1)
x = 8
get_pair_prod(head, x)

ইনপুট

head = None
head = insert(head, 9)
head = insert(head, 8)
head = insert(head, 6)
head = insert(head, 5)
head = insert(head, 4)
head = insert(head, 2)
head = insert(head, 1)
x = 8

আউটপুট

( 1 , 8 )
( 2 , 4 )

  1. একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকায় ট্রিপলেট গণনা করুন যার যোগফল C++ এ একটি প্রদত্ত মানের x এর সমান।

  2. একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকায় ট্রিপলেট গণনা করুন যার পণ্য C++ এ একটি প্রদত্ত মানের x সমান।

  3. C++ এ প্রদত্ত লিঙ্কযুক্ত তালিকার শেষ N নোডের গুণফল খুঁজুন

  4. পাইথনের একটি প্রদত্ত বাইনারি ট্রিতে একটি লিঙ্কযুক্ত তালিকা উপস্থিত আছে কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম