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