단일 연결 목록이 있다고 가정합니다. 연결 리스트는 가장 중요한 자릿수가 먼저 있는 이진수를 나타내므로 십진수로 반환해야 합니다.
따라서 입력이 [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
- 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