मान लीजिए हमारे पास एक सिंगली लिंक्ड लिस्ट है। लिंक्ड लिस्ट एक बाइनरी संख्या को दर्शाती है जिसमें सबसे महत्वपूर्ण अंक पहले हैं, हमें इसे दशमलव संख्या के रूप में वापस करना है।
उदाहरण के लिए, यदि इनपुट [1,0,1,1,0] है, तो आउटपुट 22 होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- l := एक नई सूची
- जब तक node null नहीं है, करें:
- l के अंत में node का मान डालें
- node := node का अगला
- k := 0, v := 0
- i को l के आकार -1 से 0 तक घटाते हुए करें:
- यदि l[i] == 1, तो v := v + 2^k
- k := k + 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