LeetCode-in-Java

1290. Convert Binary Number in a Linked List to Integer

Easy

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:

Solution

import com_github_leetcode.ListNode;

/*
 * 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; }
 * }
 */
public class Solution {
    public int getDecimalValue(ListNode head) {
        int l = 0;
        ListNode curr = head;
        while (curr.next != null) {
            l++;
            curr = curr.next;
        }
        curr = head;
        int num = 0;
        while (curr != null) {
            num += curr.val * (int) Math.pow(2, l--);
            curr = curr.next;
        }
        return num;
    }
}