將表示二進位制數的連結串列轉換成 Python 十進位制整數的程式


假設我們有一個單向連結串列。該連結串列表示一個二進位制數,其中最高有效數字排在最前面,我們必須將其返回為十進位制數。

因此,如果輸入類似於 [1,0,1,1,0],則輸出將為 22

要解決這個問題,我們將遵循以下步驟 -

  • l := 一個新列表
  • 當節點不為空時,做
    • 在 l 的末尾插入節點的值
    • node:= node 的下一個
  • k := 0,v:= 0
  • 針對 l 的長度從 -1 到 0,遞減 1,做
    • 如果 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

更新於: 06-10-2020

1 千+ 次瀏覽

助力您的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.