【中等】力扣算法题解析LeetCode369:给单链表加一

关注文末推广名片,即可免费获得本题测试源码

题目来源:🔒LeetCode 369. 给单链表加一

问题抽象: 给定一个非空 单向链表(头节点 head),表示一个 非负整数(头节点为最高位,尾节点为个位),要求实现链表的 加一操作,并返回新链表的头节点,满足以下核心需求:

  1. 操作规则定义

    • 从链表尾部(个位)开始执行 加一,逐位处理 进位(当前位 = (val + carry) % 10,进位 = (val + carry) // 10);
    • 若最高位产生新进位(carry=1),需在链表头部插入值为 1 的新节点。
  2. 数据结构要求

    • 链表节点结构:class ListNode { int val; ListNode next; }
    • 禁止直接修改节点值(需处理进位和节点新增);
    • 结果链表需保持原节点顺序(最高位→最低位)。
  3. 计算约束

    • 时间复杂度 O(n)n 为链表长度),空间复杂度 O(1)(需避免递归栈);
    • 需通过 链表反转双指针 实现:
      • 反转链表 → 从新头部(原尾部)开始加一 → 处理进位 → 反转恢复;
      • 或定位 最后一个非9节点(避免全为9时遍历两次)。
  4. 边界处理

    • 链表表示 0(单节点 0)→ 加一后为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达文汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值