Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में क्रमबद्ध डबल लिंक्ड सूची में दिए गए उत्पाद के साथ जोड़े खोजें


मान लीजिए कि हमारे पास अद्वितीय धनात्मक संख्याओं की एक क्रमबद्ध डबल लिंक्ड सूची है; हमें डबल लिंक्ड सूची में ऐसे जोड़े खोजने होंगे जिनका उत्पाद दिए गए मान x के समान हो। हमें यह ध्यान में रखना होगा कि, इसे बिना किसी अतिरिक्त स्थान की खपत के हल किया जाएगा।

इसलिए, यदि इनपुट L =1 ⇔ 2 ⇔ 4 ⇔ 5 ⇔ 6 ⇔ 8 ⇔ 9 और x =8 जैसा है, तो आउटपुट (1, 8), (2, 4)

होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • वक्र:=सिर, अगला:=सिर

  • जबकि nxt.next नहीं है कोई भी गैर-शून्य नहीं है, करें

    • अगला:=nxt.next

  • पाया :=असत्य

  • जबकि curr और nxt शून्य नहीं हैं और curr और nxt अलग हैं और nxt.next curr नहीं है, करें

    • अगर (curr.data * nxt.data) x के समान है, तो

      • पाया :=सच

      • एक जोड़ी प्रदर्शित करें curr.data, nxt.data

      • curr :=curr.next

      • अगला:=nxt.prev

    • अन्यथा,

      • अगर (curr.data * nxt.data)

        • curr :=curr.next

      • अन्यथा,

        • अगला:=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 के बराबर है

    उदाहरण के लिए इनपुट linked list: [ 3−4−13−5−10−10−0 ] x=20 आउटपुट Count of triplets in a sorted doubly linked list whose product is equal to a given value x are: 2 स्पष्टीकरण Triplets will be: ( 3,4,13 ) and ( 10,10,0 ) इनपुट linked list: [ 4−3−1&minu

  1. एक क्रमबद्ध डबल लिंक्ड सूची में ट्रिपल गिनें जिसका उत्पाद सी ++ में दिए गए मान x के बराबर है

    पूर्णांक मानों वाली एक क्रमबद्ध डबल लिंक्ड सूची को देखते हुए। लक्ष्य उन त्रिगुणों को खोजना है जिनका गुणनफल दिए गए मान x के बराबर है। यदि इनपुट लिंक्ड सूची 3−4−1−2 है और x 6 है तो गिनती 1 (ट्रिपलेट (3,1,2)) होगी उदाहरण के लिए इनपुट linked list: [ 200−4−16−5−10−10&min

  1. पायथन में दिए गए बाइनरी ट्री में एक लिंक्ड सूची मौजूद है या नहीं यह पता लगाने के लिए कार्यक्रम

    मान लीजिए कि हमें एक बाइनरी ट्री दिया गया है जिसमें रूट नोड रूट है और एक लिंक्ड लिस्ट है जिसमें हेड नोड हेड है। हमें यह पता लगाना होगा कि क्या वह लिंक्ड सूची उस बाइनरी ट्री में मौजूद है। यदि पेड़ में नोड्स के एक सेट में लिंक की गई सूची के रूप में एक दूसरे के साथ लिंक हैं, और यदि वह क्रम प्रदान की गई