Convert Binary Number in a Linked List to Integer
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.
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
Example 3:
Input: head = [1]
Output: 1
Example 4:
Input: head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
Output: 18880
Example 5:
Input: head = [0,0]
Output: 0
Constraints:
The Linked List is not empty.
Number of nodes will not exceed
30
.Each node's value is either
0
or1
.
Solutions
🧠 Cpp
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution
{
public:
int getDecimalValue(ListNode* head)
{
string binary_s;
for(; head; head = head->next)
binary_s += to_string(head->val);
return std::stoi(binary_s, nullptr, 2);
/*
bitset<32> binary_b;
for(size_t i = 0, len = binary_s.size();
i < len;
++i)
binary_b[i] = binary_s[len-1-i] == '1';
return static_cast<int>(binary_b.to_ulong());
*/
}
};
Last updated
Was this helpful?