Welcome to Subscribe On Youtube

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.

The most significant bit is at the head of 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

 

Constraints:

  • The Linked List is not empty.
  • Number of nodes will not exceed 30.
  • Each node's value is either 0 or 1.

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; }
     * }
     */
    class Solution {
        public int getDecimalValue(ListNode head) {
            int ans = 0;
            for (; head != null; head = head.next) {
                ans = ans << 1 | head.val;
            }
            return ans;
        }
    }
    
  • /**
     * 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) {
            int ans = 0;
            for (; head; head = head->next) {
                ans = ans << 1 | head->val;
            }
            return ans;
        }
    };
    
  • # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, val=0, next=None):
    #         self.val = val
    #         self.next = next
    class Solution:
        def getDecimalValue(self, head: ListNode) -> int:
            ans = 0
            while head:
                ans = ans << 1 | head.val
                head = head.next
            return ans
    
    
  • /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    func getDecimalValue(head *ListNode) (ans int) {
    	for ; head != nil; head = head.Next {
    		ans = ans<<1 | head.Val
    	}
    	return
    }
    
  • /**
     * Definition for singly-linked list.
     * class ListNode {
     *     val: number
     *     next: ListNode | null
     *     constructor(val?: number, next?: ListNode | null) {
     *         this.val = (val===undefined ? 0 : val)
     *         this.next = (next===undefined ? null : next)
     *     }
     * }
     */
    
    function getDecimalValue(head: ListNode | null): number {
        let ans = 0;
        for (; head; head = head.next) {
            ans = (ans << 1) | head.val;
        }
        return ans;
    }
    
    
  • /**
     * Definition for singly-linked list.
     * function ListNode(val, next) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.next = (next===undefined ? null : next)
     * }
     */
    /**
     * @param {ListNode} head
     * @return {number}
     */
    var getDecimalValue = function (head) {
        let ans = 0;
        for (; head; head = head.next) {
            ans = (ans << 1) | head.val;
        }
        return ans;
    };
    
    
  • /**
     * Definition for a singly-linked list.
     * class ListNode {
     *     public $val = 0;
     *     public $next = null;
     *     function __construct($val = 0, $next = null) {
     *         $this->val = $val;
     *         $this->next = $next;
     *     }
     * }
     */
    class Solution {
        /**
         * @param ListNode $head
         * @return Integer
         */
        function getDecimalValue($head) {
            $rs = [];
            while ($head != null) {
                array_push($rs, $head->val);
                $head = $head->next;
            }
            $rsStr = implode($rs);
            return bindec($rsStr);
        }
    }
    
  • // 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 ans = 0;
            let mut cur = &head;
            while let Some(node) = cur {
                ans = (ans << 1) | node.val;
                cur = &node.next;
            }
            ans
        }
    }
    
    

All Problems

All Solutions