创见博客
加一
七崽爱吃小饼干2026/01/21阅读 0

加一

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

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

示例 1:

codeType
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
加 1 后得到 123 + 1 = 124。
因此,结果应该是 [1,2,4]。

示例 2:

codeType
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
加 1 后得到 4321 + 1 = 4322。
因此,结果应该是 [4,3,2,2]。

示例 3:

codeType
输入:digits = [9]
输出:[1,0]
解释:输入数组表示数字 9。
加 1 得到了 9 + 1 = 10。
因此,结果应该是 [1,0]。

提示:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9
  • digits 不包含任何前导 0。

解法

ts
function plusOne(digits: number[]): number[] {
    // 直接从最后一位开始加1即可,主要是需要注意进位
    const n = digits.length
    let carry = 1 // 进位,初始进位设为1
    for(let i = n - 1; i >= 0; i--){
        let num = digits[i] + carry
        digits[i] = num % 10
        carry = Math.floor(num / 10)
    }
    // 处理超出数组长度的进位
    if(carry) digits.unshift(carry)
    return digits
};
评论
0/100