ধরুন আমরা একটি একক লিঙ্ক তালিকা আছে. লিঙ্ক করা তালিকাটি প্রথমে সবচেয়ে উল্লেখযোগ্য সংখ্যা সহ একটি বাইনারি সংখ্যা উপস্থাপন করছে, আমাদের এটি দশমিক সংখ্যা হিসাবে ফিরিয়ে দিতে হবে।
সুতরাং, ইনপুট যদি [1,0,1,1,0] এর মত হয়, তাহলে আউটপুট হবে 22
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- l :=একটি নতুন তালিকা
- যদিও নোড নাল না হয়, তবে
- করুন
- l-এর শেষে নোডের মান সন্নিবেশ করান
- নোড:=নোডের পাশে
- k :=0, v:=0
- আমি l - 1 থেকে 0 এর রেঞ্জের আকারে, 1 দ্বারা হ্রাস করুন, করুন
- যদি l[i] 1 এর মত হয়, তাহলে
- v :=v + 2^k
- k :=k + 1
- যদি l[i] 1 এর মত হয়, তাহলে
- রিটার্ন v
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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): l = [] while node: l.append(node.val) node=node.next k = 0 v=0 for i in range(len(l)-1,-1,-1): if (l[i]==1): v += (2**k) k+=1 return v ob = Solution() head = make_list([1,0,1,1,0]) print(ob.solve(head))
ইনপুট
[1,0,1,1,0]
আউটপুট
22