1290. Convert Binary Number in a Linked List to Integer

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

 

Constraints:

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

 

二、程式作法

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int val=0, ListNode next=null) {
 *         this.val = val;
 *         this.next = next;
 *     }
 * }
 */
public class Solution
{
    public int GetDecimalValue(ListNode head)
    {
        Stack<int> set = new Stack<int>();
        while (head != null)
        {
            set.Push(head.val);
            head = head.next;
        }

        int carr = 0;
        int sum = 0;

        while (set.Count > 0)
        {
            sum += set.Pop() * (int)Math.Pow(2, carr++);
        }
        return sum;
    }
}

 

三、思路筆記

需先知道整個長度後,再做每個進位加總。