LeetCode题解之二进制链表转整数

二进制链表转整数

题目描述

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。

请你返回该链表所表示数字的 十进制值

示例1 :

二进制链表
输入:head = [1,0,1]
输出:5
解释:二进制数 (101) 转化为十进制数 (5)

示例2 :

输入:head = [0]
输出:0

示例3 :

输入:head = [1]
输出:1

示例4 :

输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]
输出:18880

示例5 :

输入:head = [0,0]
输出:0

提示:

  • 链表不为空。
  • 链表的结点总数不超过 30。
  • 每个结点的值不是 0 就是 1。

解题思路

遍历链表模拟二进制转十进制的过程。

复杂度分析

  • 时间复杂度:O(n)。
  • 空间复杂度:O(1)。

代码实现

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int getDecimalValue(ListNode head) {
        ListNode cur = head;
        int res = 0;
        while (cur != null) {
            res = res * 2 + cur.val;
            cur = cur.next;
        }
        return res;
    }
}

你可能感兴趣的:(LeetCode题解之二进制链表转整数)