LeetCode热题(JS版)- 66. 加一

116 阅读1分钟

题目

给您一个大整数,表示为整数数组“数字”,其中每个“数字[i]”是整数的“第i”位。数字按照从左到右的顺序从最高有效到最低有效。大整数不包含任何前导“0”。

将大整数递增1,并返回所得数字数组

示例 1:

输入: digits = [1,2,3]
输出: [1,2,4]
说明:123 + 1 = 124,所以返回 [1,2,4]

示例 2:

输入: digits = [4,3,2,1]
输出: [4,3,2,2]
说明: 4321 + 1 = 4322,所以返回 [4,3,2,2].

示例 3:

输入: digits = [9]
输出: [1,0]
说明: 9 + 1 = 10,所以返回 [1,0].

思路

  • 需要判断进位,最后一位进位需要记录
  • 数组逆序输出
function plusOne(digits: number[]): number[] {
    const numbers = [];
    let pre = 0;

    for(let i = digits.length - 1; i >= 0; i--) {
        const val = digits[i];
        const last = i === digits.length - 1
        let sum = val + pre + (last ? 1: 0);

        pre = sum > 9 ? 1 : 0;

        numbers.push(sum % 10)
    }

    if(pre) numbers.push(pre);

    return numbers.reverse();
};

image.png