ধরুন আমাদের একটি এককভাবে লিঙ্কযুক্ত তালিকা নোড আছে, আমাদের মধ্যবর্তী নোডের মান খুঁজে বের করতে হবে। এবং যখন দুটি মধ্যবর্তী নোড থাকবে, তখন আমরা দ্বিতীয়টি ফেরত দেব। আমাদের একক পাসে এটি সমাধান করার চেষ্টা করতে হবে।
সুতরাং, ইনপুট যদি [5,9,6,4,8,2,1,4,5,2] এর মত হয়, তাহলে আউটপুট হবে 2।
এটি সমাধান করার জন্য, আমরা এই পদক্ষেপগুলি অনুসরণ করব—
-
p:=নোড
-
d:=0, l:=0
-
যখন নোড নাল না হয়, তখন করুন
-
যদি d 2 এর মত না হয়, তাহলে
-
নোড:=নোডের পরবর্তী
-
l :=l + 1, d :=d + 1
-
-
অন্যথায়,
-
-
p:=p এর পরের, d:=0
-
p এর রিটার্ন ভ্যাল যখন l বিজোড় হয় অন্যথায় p
এর পরের মান
-
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
উদাহরণ
class ListNode: def __init__(self, data, next = None): self.val = data self.next = next def make_list(elements): head = ListNode(elements[0]) for element in elements[1:]: ptr = head while ptr.next: ptr = ptr.next ptr.next = ListNode(element) return head class Solution: def solve(self, node): p=node d=0 l=0 while node: if d!=2: node=node.next l+=1 d+=1 else: p=p.next d=0 return p.val if l & 1 else p.next.val ob = Solution() head = make_list([5,9,6,4,8,2,1,4,5,2]) print(ob.solve(head))
ইনপুট
Input: [5,9,6,4,8,2,1,4,5,2]
আউটপুট
2