1290. 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 or 1.

Rust Solution

struct Solution;
use rustgym_util::*;

impl Solution {
    fn get_decimal_value(head: ListLink) -> i32 {
        let mut p: &ListLink = &head;
        let mut res = 0;
        while let Some(n) = p {
            res *= 2;
            res += n.val;
            p = &n.next;
        }
        res
    }
}

#[test]
fn test() {
    let head = list!(1, 0, 1);
    assert_eq!(Solution::get_decimal_value(head), 5);
}

Having problems with this solution? Click here to submit an issue on github.