/**
* @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
};