☰
Leetcode 92
2026/10/30 5:28:26 网站建设 项目流程

跨年快乐,元旦快乐!

1 题目

1290. 二进制链表转整数

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

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

最高位在链表的头部。

示例 1:

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

示例 2:

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

提示:

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

2 代码实现

实现思路

完成一下连胜打卡,主要是为了熟悉一下c++的语法,有关于链表的。

这个问题的核心逻辑很简单:

  1. 初始化一个结果变量result为 0。
  2. 遍历链表的每一个节点:
    • 每到一个新节点,先将当前结果左移一位(相当于乘以 2)。
    • 再将当前节点的值加到结果中。
  3. 遍历完成后,result就是最终的十进制值。

具体的代码

class Solution { public: int getDecimalValue(ListNode* head) { int result = 0; // 存储最终的十进制结果 ListNode* current = head; // 遍历指针 // 遍历链表的所有节点 while (current != nullptr) { // 核心计算逻辑:左移一位(乘以2) + 当前节点值 result = result * 2 + current->val; // 也可以写成位运算形式:result = (result << 1) | current->val; current = current->next; // 移动到下一个节点 } return result; } };

2025,再见!2026,你好!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询