문제
Given head which is a reference node to a singly-linked list. The value of each node in the linked list is either 0 or 1. The linked list holds the binary representation of a number.
Return the decimal value of the number in the linked list.
단일 head연결 목록에 대한 참조 노드가 지정됩니다. 연결 목록의 각 노드 값은 0또는 1입니다. 연결 목록은 숫자의 이진 표현을 보유합니다.
연결 목록에 있는 숫자 의 10진수 값 을 반환합니다 .
예시
Example 1:
Input: head = [1,0,1]
Output: 5
Explanation: (101) in base 2 = (5) in base 10
Example 2:
Input: head = [0]
Output: 0
제약 조건
Constraints:
- The Linked List is not empty.
- Number of nodes will not exceed 30.
- Each node's value is either 0 or 1.
해결 과정
linked list를 탐색하며 val 값을 binary 배열에 저장하고 join을 통해 10진수로 바꾸어보았다.
이번 문제는 첫 시도에 해결할 수 있었다.
- linked list에 있는 val 값을 저장할 binary 배열을 선언한다.
- while문에서 탐색할 때 사용할 curr 변수와 prev 변수를 초기화한다. 이때 초기값은 head와 null로 설정한다.
- curr 값이 null이 될 때까지 while문을 반복한다.
- curr의 val값을 binary 배열에 저장한다.
- curr은 curr.next로, prev는 curr로 옮기며 탐색을 한다.
- while문을 빠져나온 후, binary값을 join을 통해 병합한 후 10진수로 변환하여 반환한다.
해결 코드
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {number}
*/
var getDecimalValue = function(head) {
let binary = [];
let curr = head;
let prev = null;
while(curr){
binary.push(curr.val);
let temp = curr;
curr = curr.next;
prev = temp;
}
return parseInt(binary.join(""), 2);
};
'leetCode' 카테고리의 다른 글
[Easy] 104. Maximum Depth of Binary Tree (0) | 2022.06.06 |
---|---|
[Easy] 876. Middle of the Linked List (0) | 2022.06.06 |
[Easy] 389. Find the Difference (0) | 2022.06.02 |
[Easy] 1678. Goal Parser Interpretation (0) | 2022.06.02 |
[Easy] 953. Verifying an Alien Dictionary (4) | 2022.06.02 |
Comment