算法54,链表 两数相加

📒 链表常用技巧与操作总结

一、 链表解题4大通用技巧
  1. 画图辅助:指针反转/交换时必画图,避免指向关系混乱。
  2. 虚拟头节点:引入不带数据的虚拟头节点(Dummy Node),统一处理空指针和头节点修改的边界问题。
  3. 大胆定义变量:不吝啬空间,按需定义前驱(pre)、尾指针(tail)、快慢双指针等。
  4. 快慢双指针应用 :
    • 找链表中点、倒数第N个节点。
    • 判断链表是否有环(相遇则有环)。
    • 找环的入口(相遇后,慢指针回起点,快慢同速走,再次相遇点即入口)。

二、 重点题型:链表两数相加(LeetCode 2)

核心思路:模拟竖式加法,逐位相加并维护进位。

  • 逆序存储(默认情况) :
    • 链表头是个位,直接从头遍历相加。
    • 维护进位变量 carry(笔记中的 t)。
    • 任意链表未遍历完 或 还有剩余进位时,继续循环。
  • 正序存储(进阶情况) :
    • 需要逆序操作,通常配合栈(Stack)或递归实现。

三、 链表两数相加(逆序)代码模板
复制代码
class ListNode {
    int val;
    ListNode next;
    ListNode(int val) { this.val = val; }
}

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    // 1. 创建虚拟头节点(对应笔记中的 newHead)
    ListNode dummy = new ListNode(0);
    ListNode resCur = dummy; // 结果链表的移动指针
    int carry = 0;           // 进位标记(对应笔记中的 t)

    // 2. 循环条件:链表未遍历完 或 还有进位
    while (l1 != null || l2 != null || carry != 0) {
        // 3. 取值:链表为空则补0
        int v1 = (l1 != null) ? l1.val : 0;
        int v2 = (l2 != null) ? l2.val : 0;

        // 4. 计算总和与进位
        int sum = v1 + v2 + carry;
        resCur.next = new ListNode(sum % 10); // 当前位结果
        carry = sum / 10;                      // 更新进位

        // 5. 指针后移
        resCur = resCur.next;
        if (l1 != null) l1 = l1.next;
        if (l2 != null) l2 = l2.next;
    }
    
    // 6. 返回虚拟头的下一个节点
    return dummy.next;
}

四、 补充:其他链表高频操作备忘
  • 反转链表 :定义 pre = null, cur = head,遍历改指向
  • 合并链表:虚拟头节点 + 双指针比较大小尾插。
  • 删除倒数第N个节点:快指针先走N步,快慢同速走,快到尾时慢指针指向待删节点的前驱。
相关推荐
罗湖老棍子8 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
stsdddd10 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码11 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n11 小时前
【算法】约瑟夫环问题
java·算法
郝亚军11 小时前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
l1t11 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil20812 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE12 小时前
10.18【A】
算法
LMT流氓兔12 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
物联网软硬件开发-轨物科技13 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人