As part of Data Structures & Algorithms implementation using Rust, let's see how to solve Convert Binary Number in a Linked List to Integer
problem.
Leetcode problem link: https://leetcode.com/problems/convert-binary-number-in-a-linked-list-to-integer/
Problem Statement
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.
Instructions
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.
Solution
Please find below the solution implemented using Rust
// Definition for singly-linked list.
// #[derive(PartialEq, Eq, Clone, Debug)]
// pub struct ListNode {
// pub val: i32,
// pub next: Option<Box<ListNode>>
// }
//
// impl ListNode {
// #[inline]
// fn new(val: i32) -> Self {
// ListNode {
// next: None,
// val
// }
// }
// }
impl Solution {
pub fn get_decimal_value(head: Option<Box<ListNode>>) -> i32 {
let mut iter = head.iter();
let mut v = Vec::new();
loop {
let n = iter.next();
match n {
Some(x) => {
v.push(x.val);
iter = x.next.iter();
},
None => break
};
}
v.iter().fold(0, |acc, &b| acc*2 + b as i32)
}
}
Please feel free to share your feedback.
Happy reading!!!
Top comments (0)