Pythonで2進数を表すリンクリストを10進数に変換するプログラム
単一リンクリストがあるとします。リンクリストは、最上位桁が最初の2進数を表しているため、10進数として返す必要があります。
したがって、入力が[1,0,1,1,0]の場合、出力は22
になります。これを解決するには、次の手順に従います-
- l:=新しいリスト
- ノードがnullでない場合は、
- lの最後にノードの値を挿入
- node:=ノードの次
- k:=0、v:=0
- 範囲サイズがl-1から0のiの場合、1ずつ減らします。
- l [i]が1と同じ場合、
- v:=v + 2 ^ k
- k:=k + 1
- l [i]が1と同じ場合、
- return 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
-
Pythonプログラムで10進数を2進数に変換する
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 10進数が与えられているので、それに相当する2進数に変換する必要があります。 与えられた問題を解決するための2つのアプローチがあります。それらを1つずつ見てみましょう- 再帰的アプローチ 例 def DecimalToBinary(num): if num > 1: DecimalToBinary(num // 2) print(num % 2, end = '') # main if _
-
10進数を2進数に変換するPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 数値を指定すると、2進数に変換する必要があります。 アプローチ1-再帰的ソリューション DecToBin(num): if num > 1: DecToBin(num // 2) print num % 2 例 def DecimalToBinary(num): if num > 1: Decimal