加一
题目:加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数0之外,这个整数不会以零开头。 示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
1
2
3
2
3
示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
1
2
3
2
3
示例 3:
输入:digits = [0]
输出:[1]
1
2
2
根据上述实例,我们可以将数组当成一个被拆分的数字加一,由此可以得到以下代码
// 现将数字转化为数字再加1再将数字转为数组
(parseInt(digits.toString()) + 1 + '').split('')
1
2
2
这里有个小问题,js中number类型有长度限制如果数组过长就会产生误差,果然没有通过提交,如下:

既然不能使用简便方式,那只能按加法按十进一的方式进行,如下:
从尾部开始遍历,逢十进一如果首位进一则在首位推入1
var plusOne = function(digits) {
for(let i = digits.length - 1; i >= 0 ; i--) {
if (digits[i] + 1 > 9) {
digits[i] = 0
if (i == 0) {
digits.unshift(1)
break;
}
} else {
digits[i] = digits[i] + 1
break
}
}
return digits
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
上次更新: 2025/09/05, 8:09:00