当我们对数组 arr 加一时,我们只需要关注 arr 的末尾出现了多少个 9 即可。我们可以考虑如下的三种情况:
- 如果
arr的末尾没有9,例如[1,2,3],那么我们直接将末尾的数加一,得到[1,2,4]并返回; - 如果
arr的末尾有若干个9,例如[1,2,3,9,9],那么我们只需要找出从末尾开始的第一个不为 9 的元素,即3,将该元素加一,得到[1,2,4,9,9]。随后将末尾的 9 全部置零,得到[1,2,4,0,0]并返回。 - 如果
arr的所有元素都是9,例如[9,9,9,9,9],那么答案为[1,0,0,0,0,0]。我们只需要构造一个长度比 arr 多1的新数组,将首元素置为1,其余元素置为0即可。
var plusOne = function(arr) {
var n = arr.length;
for (let i = n - 1; i >= 0; i--) {
if (arr[i] !== 9) {
arr[i]++;
for (let j = i + 1; j < n; j++) {
arr[j] = 0;
}
return arr;
}
}
var res = new Array(n + 1).fill(0);
res[0] = 1;
return res;
};