Python
 Computer >> コンピューター >  >> プログラミング >> Python

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
  • 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

  1. Pythonプログラムで10進数を2進数に変換する

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 10進数が与えられているので、それに相当する2進数に変換する必要があります。 与えられた問題を解決するための2つのアプローチがあります。それらを1つずつ見てみましょう- 再帰的アプローチ 例 def DecimalToBinary(num):    if num > 1:       DecimalToBinary(num // 2)    print(num % 2, end = '') # main if _

  2. 10進数を2進数に変換するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 数値を指定すると、2進数に変換する必要があります。 アプローチ1-再帰的ソリューション DecToBin(num):    if num > 1:       DecToBin(num // 2)       print num % 2 例 def DecimalToBinary(num):    if num > 1:       Decimal