LeetCode in Kotlin

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

/*
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
class Solution {
    fun getDecimalValue(head: ListNode?): Int {
        var l = 0
        var curr = head
        while (curr!!.next != null) {
            l++
            curr = curr.next
        }
        curr = head
        var num = 0
        while (curr != null) {
            num += curr.`val` * Math.pow(2.0, l--.toDouble()).toInt()
            curr = curr.next
        }
        return num
    }
}