ধরুন আমাদের কাছে অনন্য ধনাত্মক সংখ্যার একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা রয়েছে; আমাদের দ্বিগুণ লিঙ্কযুক্ত তালিকায় জোড়া খুঁজে বের করতে হবে যার পণ্য একটি প্রদত্ত মান 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 )