[LeetCode 1290] Convert Binary Number in a Linked List to Integer
LeetCode 1290 (Java)
[Convert Binary Number in a Linked List to Integer] 문제 풀이
[LeetCode 1290] Convert Binary Number in a Linked List to Integer
Description
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.
The most significant bit is at the head of the linked list.
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
0or1.
Hint
Hint 1
Traverse the linked list and store all values in a string or array. convert the values obtained to decimal value.
Hint 2
You can solve the problem in O(1) memory using bits operation. use shift left operation ( << ) and or operation ( | ) to get the decimal value in one operation.
Code
내 제출
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public int getDecimalValue(ListNode head) {
int ans = 0;
for (; head != null; head = head.next) {
ans = ans << 1 | head.val;
}
return ans;
}
}
| Runtime | Memory |
|---|---|
| 0 ms | 41.4 MB |
다른 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public int getDecimalValue(ListNode head) {
StringBuilder sb = new StringBuilder();
ListNode temp = head;
while(temp != null){
sb.append(temp.val);
temp = temp.next;
}
return Integer.parseInt(sb.toString(), 2);
}
}
Reference
- https://github.com/doocs/leetcode/blob/main/solution/1200-1299/1290.Convert%20Binary%20Number%20in%20a%20Linked%20List%20to%20Integer/Solution.java
This post is licensed under CC BY 4.0 by the author.

