Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 이진수를 나타내는 연결 리스트를 십진 정수로 변환하는 프로그램

<시간/>

단일 연결 목록이 있다고 가정합니다. 연결 리스트는 가장 중요한 자릿수가 먼저 있는 이진수를 나타내므로 십진수로 반환해야 합니다.

따라서 입력이 [1,0,1,1,0]과 같으면 출력은 22

가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • l :=새 목록
  • 노드가 null이 아닌 동안 수행
    • l 끝에 노드 값 삽입
    • 노드:=노드의 다음
  • k :=0, v:=0
  • 범위 크기가 l - 1에서 0인 i에 대해 1만큼 감소, do
    • 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