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

leetcode2-两数相加

leetcode 2
在这里插入图片描述

思路

  1. 链表特性利用:由于数字按逆序存储,个位在链表头部,因此可以直接从前往后遍历链表进行逐位相加

比如题目中的 2->4->3 和 5->6->4 其实可以直接按位从第一位开始往后相加,就得到啦708
这样比把数字转换为342+465 得到结果以后再把结果倒叙设置链表更简单

  1. 进位处理:每一位相加可能产生进位(如 9+9=18,进位为 1),需要用变量 count 记录进位值

如果有进位,那么下一次相加的时候就要把进位的数也加上,加上以后注意需要清空count,然后再判断如果当前两个数相加以后的值也有进位,那就继续更新count

  1. 虚拟头节点:使用虚拟节点 dummy 简化头节点处理,避免单独判断空链表情况

  2. 边界处理:当加到l1 l2最后的时候,最后两位相加如果大于10那么还会有进位,此时需要单独再判断如果count还有值需要设置最后一位链表为count

实现

class ListNode {constructor(val, next = null) {this.val = val;this.next = next;}
}function addTwoNumbers(l1, l2) {let count = 0; // 记录是否有进位// 创建虚拟节点let dummy = new ListNode();let cur = dummy;while (l1 || l2) {let val = 0;if (l1) {val += l1.vall1 = l1.next;}if (l2) {val += l2.val;l2 = l2.next;}if (count) {val += count;count = 0;}if (val > 9) {count++;val = val % 10;}cur.next = new ListNode(val);cur = cur.next;}if(count){cur.next = new ListNode(count)}return dummy.next;
}
http://www.xdnf.cn/news/1035199.html

相关文章:

  • pycharm 2025.1.1-专业版jupyter notebook远程连接
  • 汇编语言学习(四)——汇编语言程序
  • 微信小程序使用图片实现红包雨功能
  • 算法专题八: 链表
  • scanf 读取字符串
  • 本地密码生成管理工具,自定义生成密码
  • Vue3组件生成唯一标识符方法
  • 16.vue.js watch()和watchEffect()的对比?(追踪依赖)(3)
  • 华为OD机考-货币单位换算-字符串(JAVA 2025B卷)
  • CMake 构建系统概述
  • LeetCode - 153. 寻找旋转排序数组中的最小值
  • Hive SQL执行流程深度解析:从CLI入口到执行计划生成
  • 计网复习知识(16)传输层及其协议功能
  • 贝塞尔曲线:优雅的数学艺术
  • C# 解析 URL URI 中的参数
  • OpenWrt | 解决NTFS格式的硬盘意外断电之后无法再次挂载的问题
  • 轻量免安装 透明背景图标一键提取,系统文件图标随取随用
  • NGINX 四层共享内存区同步模块实战 `ngx_stream_zone_sync_module`
  • qml显示svg矢量图形
  • FreeRTOS的低功耗Tickless模式
  • RLHF调参实战手册:实用Trick、现象排查与解决思路(持续更新)
  • 动态BGP服务器的用途都有什么?
  • Softhub软件下载站实战开发(二):项目基础框架搭建
  • 萌系盲盒陷维权风暴,Dreams委托David律所已立案,速避雷
  • 历史数据分析——贵州茅台
  • LeetCode[106]从中序和后序遍历序列构造二叉树
  • Sngine 4.0.4海外社交平台PHP源码 – 多语言支持短视频和博客订阅(源码下载)
  • [学习] 多项滤波器在信号插值和抽取中的应用:原理、实现与仿真(完整仿真代码)
  • 使用Three.js创建炫酷的3D玻璃质感动态效果
  • 大小端的区别