当前位置: 首页 > news >正文

LeetCode 分类刷题:2816. 翻倍以链表形式表示的数字

题目

给你一个 非空 链表的头节点 head ,表示一个不含前导零的非负数整数。

将链表 翻倍 后,返回头节点 head 

解析

我的思路:

  1. 先反转链表,设进位值为0。
  2. 然后从个位(反转后的头节点)开始,依次计算当前节点值的2倍,取10的余数 + 进位值 作为 当前节点值,再移动到下一个节点,直到链表空。
  3. 最后看是否有进位值,有则新建一个节点,并将该节点指向反转前的头节点,即作为原头节点的前驱节点。
  4. 返回再次反转的链表。

灵神思路:

如果不考虑进位,就是每个节点的值乘以 2。

什么时候会受到进位的影响呢?只有下一个节点大于 4 的时候,才会因为进位多加一。

特别地,如果链表头的值大于 4,那么需要在前面插入一个新的节点。

作者:灵茶山艾府
链接:https://leetcode.cn/problems/double-a-number-represented-as-a-linked-list/solutions/2385962/o1-kong-jian-zuo-fa-kan-cheng-shi-head-y-1dco/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

答案

我的答案:

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
/*** @param {ListNode} head* @return {ListNode}*/
var reverseList = function(head) {let pre = null;let cur = head;while(cur) {let nxt = cur.next;cur.next = pre;pre = cur;cur = nxt;}return pre;
}
var doubleIt = function(head) {let l = reverseList(head);let carry = 0;let cur = l;while(cur) {carry = cur.val * 2 + carry;cur.val = carry % 10;carry = Math.floor(carry / 10);cur = cur.next;}if(carry) {let node = new ListNode(carry, null);head.next = node;}return reverseList(l);
};

灵神答案:

非常巧妙而且简洁!

var doubleIt = function(head) {if (head.val > 4) {head = new ListNode(0, head);}for (let cur = head; cur; cur = cur.next) {cur.val = cur.val * 2 % 10;if (cur.next && cur.next.val > 4) {cur.val++;}}return head;
};// 作者:灵茶山艾府
// 链接:https://leetcode.cn/problems/double-a-number-represented-as-a-linked-list/solutions/2385962/o1-kong-jian-zuo-fa-kan-cheng-shi-head-y-1dco/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度分析

时间复杂度:O(n)

空间复杂度:O(1)

http://www.dtcms.com/a/593045.html

相关文章:

  • 一文掌握,soular安装与配置
  • Whole-Body Control——双足机器人全身控制技术 论文阅读笔记
  • LeetCode hot100:240 搜索二维矩阵 II:三种解法对比
  • Wireshark笔记-DNS流程与数据包解析
  • SRv6论文阅读
  • 做电子烟外贸网站有哪些建设银行亚洲官方网站
  • 11.9 LeetCode 题目汇总与解题思路
  • leetcode 707 设计链表
  • dedecms_v5.6室内装饰设计公司企业网站模板.rar免费的素材网站有哪些
  • S7.Net documentation 文档中文说明书
  • 深度学习入门:从理论到实践
  • ts-静态类型检查,自动编译,ts类型 01
  • 文本插值,属性绑定,条件渲染,列表渲染
  • .NET周刊【11月第1期 2025-11-02】
  • C# 垃圾回收机制深度解析
  • 做微信头图的网站中国光伏企业排行榜
  • 亚马逊、Temu 自养号采购测评:从零打造安全体系
  • Mysql 5.7.26 安装
  • 【ZeroRange WebRTC】码学基础与实践:哈希、HMAC、AES、RSA/ECDSA、随机数、X.509
  • 深圳做手机网站建设中小企业网站建设多少钱
  • 【大数据技术01】数据科学的基础理论
  • 研发管理知识库(1)DevOps开发模式简介
  • 【ComfyUI/SD环境管理指南(一)】:如何避免插件安装导致的环境崩溃与快速修复
  • 深入理解 ThreadLocal、InheritableThreadLocal 与 TransmittableThreadLocal
  • 网站维护服务器广告公司叫什么名字好
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(16):文法和单词-第四课
  • 破解进入网站后台wordpress域名如何申请
  • 基于 Spring Boot 与 RabbitMQ 的分布式消息通信机制设计与实现
  • 个人网站搭建详细步骤郑州网站建设流程
  • Java 之详解字符串拼接(十四)