题目
给您一个大整数,表示为整数数组“数字”,其中每个“数字[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();
};