Post

[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 0 or 1.


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;
    }
}


RuntimeMemory
0 ms41.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.