设置一个进位的标志,设置为一,从尾部开始计算每次加上这个进位,计算是否超出10,如果没有的话直接返回答案,如果最后进位还是1,digits头部加上一个1即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
var plusOne = function (digits) { const len = digits.length - 1; let flag = 1; for (let i = len; i >= 0; i--) { const sum = digits[i] + flag; digits[i] = sum % 10; flag = sum >= 10 ? 1 : 0; if (flag === 0) break; } if (flag === 1) { digits.unshift(1); } return digits; }; console.log(plusOne([1, 2, 3])); console.log(plusOne([9])); console.log(plusOne([4, 3, 2, 1]));
|