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