মনে করুন একটি সিংলি লিংকড লিস্ট আছে যা বাইনারি নম্বর উপস্থাপন করে (MSB প্রথমে)। এটিকে ডেসিমেল নম্বরে রূপান্তর করতে হবে।
উদাহরণস্বরূপ, [1,0,1,1,0] হলে আউটপুট ২২।
সমাধানের ধাপসমূহ
- l := নতুন তালিকা
- যখন node নন-নাল, l-এ node.val যোগ করুন, node = node.next
- k := 0, v := 0
- i = l-এর আকার-১ থেকে 0 পর্যন্ত,
- যদি l[i]==1, v += 2^k
- k++
- 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