题目
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/27/
个人解法
测试用例数(个) | 执行用时(ms) | 战胜 |
---|---|---|
109 | 84 | 99.35% |
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
for (var i = digits.length - 1 ; i >= 0 ; i--) {
if (i === digits.length - 1) {
digits[i] = digits[i] + 1;
}
if (digits[i] > 9) {
var remainder = digits[i] % 10;
var carry = ~~(digits[i] / 10);
digits[i] = remainder;
if (digits[i - 1] !== undefined) {
digits[i - 1] = digits[i - 1] + carry;
} else {
digits.unshift(carry);
}
}
}
return digits;
};
最快解法
测试用例数(个) | 执行用时(ms) | 战胜 |
---|---|---|
61 | 56 | 100% |
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
let num = 1,
i = digits.length;
while(i) {
i--;
if (digits[i] === 9) {
digits[i] = 0;
num = 1;
} else {
digits[i] += num;
num = 0;
break;
}
}
if (!i && num)
digits.unshift(1);
return digits;
};
分析
类似大数计算,没啥好说。