# 66. 加一
# 题目
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
例
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
# 题解
# 模拟每一位计算
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
let flag = 0; // 进位标志
for (let i = digits.length - 1; i >= 0; --i) {
let cur = digits[i]; // 当前位
// 第一位加一
if (i == digits.length - 1) {
// 需要进位
if (cur + 1 > 9) {
digits[i] = (cur + 1) % 10;
flag = 1;
}
// 无进位可以返回
else {
digits[i] += 1;
return digits;
}
} else {
if (cur + flag > 9) {
digits[i] = (cur + 1) % 10;
flag = 1;
} else {
digits[i] += 1;
return digits;
}
}
}
if (flag == 1) {
digits.unshift(1);
}
return digits;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
← 59. 螺旋矩阵 II 70. 爬楼梯 →