zoukankan      html  css  js  c++  java
  • 1290. Convert Binary Number in a Linked List to Integer

    /**
    1290. Convert Binary Number in a Linked List to Integer
    https://leetcode.com/problems/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:
    1. The Linked List is not empty.
    2. Number of nodes will not exceed 30.
    3. Each node's value is either 0 or 1.
    */
    
    // 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,
            }
        }
    }
    
    pub struct Solution {}
    
    impl Solution {
        /*
        solution: get all element of linked-list then calculate the sum of decimal, Time:O(n)
        */
        pub fn get_decimal_value(head: Option<Box<ListNode>>) -> i32 {
            let mut result = 0;
            let mut size = 0;
            let mut current = head;
            let mut vector = Vec::new();
            //keep doing {} while current can explain as Some(node)
            while let Some(node) = current {
                size += 1;
                vector.push(node.val);
                current = node.next
            }
            for item in vector {
                size -= 1;
                /*
                to decimal:
                for example: 1101 => 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3
                */
                result += item * i32::pow(2, size);
            }
            result
        }
    }
  • 相关阅读:
    iOS.UIKit.13.UITableView -- Simple
    iOS.UIKit.12.UICollectionView
    iOS.UIKit.11.UIPickerView
    iOS.UIKit.10.UIDatePicker
    iOS.UIKit.09.UINavigationBar
    iOS.UIKit.08.UIToolbar
    iOS.UIKit.07.UIAlertView_UIActionSheet
    iOS.UIKit.06.UIProgressView_UIActivityIndicatorView
    iOS.UIKit.05.UIScrollView
    iOS.UIKit.04.UISwitch_UISegmentedControl
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/15659584.html
Copyright © 2011-2022 走看看