LeetCode题2两数相加
2023-04-18 15:27:40 时间
分析
题目比较简单,就是两个数相加求和。按照加法思想,同时遍历两个链表,从个位一直加到最高位即可。比如要计算352+99
,步骤如下:
- 最低位
2+9
得11
,需进位,个位保留1
,进位1
先存储 5+9
得14
,再加上刚刚的进位1
,得到15
,本位保留5
,进位1
先存储3+0
(注意此时99
的位数已经用完了,但是352
还有一位,所以这里可以将99
的这一位看作0
)得3
,再加上刚刚的进位1
,得到4
- 将前面几步中的数字按照顺序排列,可得到
451
。
观察上述过程,一个容易出错的地方,在于加法进位的处理。另外一个难点,在于位数的处理,两个链表长度不一,结果链表的长度也只有把前面所有位数加完才确定。
一种实现
function addTwoNumbers(l1: ListNode | null, l2: ListNode | null): ListNode | null {
const result = new ListNode(0, null);
let p1 = l1;
let p2 = l2;
let cursor = result;
while(p1 || p2 || cursor) {
const result = cursor.val + (p1?.val ?? 0) + (p2?.val ?? 0);
let tenDigit = result >= 10 ? 1 : 0;
let singleDigit = result % 10;
p1 = p1?.next ?? null;
p2 = p2?.next ?? null;
cursor.val = singleDigit;
cursor.next = (p1 || p2 || tenDigit > 0) ? new ListNode(tenDigit, null) : null;
cursor = cursor.next;
}
return result;
}
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击