將表示二進位制數的連結串列轉換成 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
- 如果 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP