解题思路


纯数学题,链表运用不大,主要考察对二进制机制的了解。

首先介绍一下什么是左移运算:

再介绍一下二进制计算:

链表结合左移:

当然,编程语言中的位运算并不会返回二进制(101)等,而是直接返回结果的十进制。

由此可以直接累加运算,不需要手动转成十进制。

实现代码


class Solution {
    public int getDecimalValue(ListNode head) {
        int res = 0;
        while (head != null) {
            res <<= 1;
            res += head.val;
            head = head.next;
        }
        return res;
    }
}

复杂度分析


  • 时间复杂度:O(N)

  • 空间复杂度:O(1)