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.
Constraints
The Linked List is not empty.
Number of nodes will not exceed
30.Each node's value is either
0or1.
Approach
Links
GeeksforGeeks
ProgramCreek
YouTube
Examples
Input: head = [1, 0, 1]

Output: 5
Explanation: (101) in base 2 = (5) in base 10
Input: head = [0]
Output: 0
Input: head = [1]
Output: 1
Input: head = [1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0]
Output: 18880
Input: head = [0, 0]
Output: 0
Solutions
// 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;
}
}/**
* Time complexity : O(N)
* Space complexity : O(1)
*/
class Solution {
public int getDecimalValue(ListNode head) {
if(head == null) return 0;
int result = 0;
ListNode curr = head;
while(curr != null) {
result = (result*2) + curr.val;
curr = curr.next;
}
return result;
}
}/**
* Time complexity : O(N)
* Space complexity : O(1)
*/
class Solution {
public int getDecimalValue(ListNode head) {
int num = head.val;
while (head.next != null) {
num = (num << 1) | head.next.val;
head = head.next;
}
return num;
}
}Follow up
Last updated
Was this helpful?