LeetCode66 加一
题目
解题
解题一:找出最长的后缀 9
// javascript
var plusOne = function(digits) {
const n = digits.length;
for (let i = n - 1; i >= 0; i--) {
if (digits[i] !== 9) {
digits[i]++;
for (let j = i + 1; j < n; j++) {
digits[j] = 0
}
return digits;
}
}
// digits 中所有的元素均为 9
const res = new Array(n + 1).fill(0);
res[0] = 1;
return res;
};
解题二:依次进位
// javascript
var plusOne = function(digits) {
const n = digits.length;
let carry = 0;
for (let i = n - 1; i >= 0; i--) {
digits[i] += 1;
if (digits[i] === 10) {
digits[i] = 0;
carry = 1;
} else {
carry = 0;
break;
}
}
if (carry === 1) digits.unshift(carry);
return digits;
};
简短版:
// javascript
var plusOne = function(digits) {
const n = digits.length;
let i = n;
while (i >= 0 && ++digits[--i] === 10) digits[i] = 0;
if (digits[0] === 0) digits.unshift(1);
return digits;
};