LeetCode 2 两数相加 - 链表

LeetCode 2 两数相加,本质就是小学的加法竖式,用链表模拟而已。


🟡 两数相加

两个逆序链表各存一个数(头是低位),加起来返回新链表。2→4→3 + 5→6→4 = 7→0→8


第一次看到这题我以为要把链表转成 int 再加------脑子短路了,链表可能是几百位的数,int 早爆了。

其实只要你手算一遍 342 + 465,你就是在做这题:从最低位开始,逐位相加,满 10 进 1。链表本来就是逆序的,头刚好是最低位,天然适合从头开始加。每一位的处理就三件事:取两个加数(没有就补 0)、加上进位、算出新的进位。

java 复制代码
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    ListNode dummy = new ListNode(0);
    ListNode cur = dummy;
    int carry = 0;

    while (l1 != null || l2 != null || carry != 0) {
        int sum = carry;
        if (l1 != null) { sum += l1.val; l1 = l1.next; }
        if (l2 != null) { sum += l2.val; l2 = l2.next; }
        cur.next = new ListNode(sum % 10);
        carry = sum / 10;
        cur = cur.next;
    }
    return dummy.next;
}

为什么循环条件里要写 || carry != 0?[5] + [5] = 10,最后 l1 和 l2 都走完了但进位是 1,不处理的话返回 [0] 漏了最高位的 1。

dummy 头节点是个老技巧了------不用判断第一个节点是不是 null,直接 cur.next = new ListNode(...),最后返回 dummy.next。


这道题你踩过什么坑?或者你用别的语言实现过吗?评论区聊聊,回头复习也方便翻。

相关推荐
yi0116 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
好想像大佬一样能够ak所有10 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
aqiu11111110 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
垆边人似月.14 小时前
华为OD算法题:查找众数及中位数
数据结构·算法·leetcode
CoderYanger14 小时前
一轮复习——F.动态规划模型总结(入门篇)
java·开发语言·数据结构·算法·leetcode·职场和发展·动态规划
浅念-16 小时前
动态规划专题:斐波那契数列模型 + 网格路径DP(LeetCode例题全解析)
笔记·算法·leetcode·面试·职场和发展·动态规划·推荐算法
夏幻灵16 小时前
每日一题:LeetCode 20:有效的括号——栈与哈希映射详解
算法·leetcode·哈希算法
Nil20817 小时前
leetcode 279完全平方数
算法·leetcode·职场和发展
longlongzihan17 小时前
前缀积与后缀积 —— LeetCode 238. 除了自身以外数组的乘积
开发语言·c++·leetcode
All for pursuit.17 小时前
【动态规划-1】121.买卖股票的最佳时机
数据结构·c++·算法·leetcode·动态规划