力扣题解析
2026/5/16 15:56:33 网站建设 项目流程

今天这段代码实现了数组形式的整数加1

虽然是简单题但是学会很有用处。

题目:给定一个表示大整数的整数数组digits,其中digits[i]是整数的第i位数字。这些数字按从左到右,从最高位到最低位排列。这个大整数不包含任何前导0

将大整数加 1,并返回结果的数字数组。

  • 遍历起点:从数组最后一位(个位)开始,逐步向前检查。
  • 非9的处理:若当前位≠9,直接+1后返回原数组(无需后续操作)。
  • 连续9的处理:若当前位=9,将其置为0(模拟进位),继续向前遍历。
  • 全9的特殊场景:若遍历完所有位仍未返回(即数组全为9),则新建长度+1的数组,首位设为1(如[9,9][1,0,0])。

2. 获取数组长度

  • int length = digits.length;
  • 作用:记录输入数组的长度,避免后续重复调用digits.length,提升效率。
  • 3. 反向遍历数组
  • while (--length >= 0) {
  • 作用:从数组**最后一位(个位)开始向前遍历(--length先减后判断,等价于从length-1开始)。
  • 遍历逻辑:依次检查个位→十位→百位…,处理进位问题。
  • 作用:检查当前位是否需要进位:
    • 若≠9:直接+1即可,无需进位;
    • 若=9:需置为0并继续向前进位。
  • 逻辑:新建长度+1的数组,首位设为1(其余默认0),返回结果(如[9,9,9][1,0,0,0])。

该代码的结果:

输入数组输出结果场景说明
[1,2,3][1,2,4]末尾非9,直接加1
[1,9,9][2,0,0]末尾连续9,进位到百位
[9,9,9][1,0,0,0]全9场景,扩容数组并补1
  • 时间复杂度:O(n)。最坏情况遍历整个数组(如全9场景),n为数组长度。
  • 空间复杂度:O(1)(非全9场景,复用原数组)或O(n)(全9场景,需新建数组)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询