https://leetcode.com/problems/plus-one/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
let p = digits.length - 1
if (p >= 0) {
let cur = ++digits[p]
if (cur > 9) {
digits[p] %= 10
digits = plusOne(digits.slice(0, p)).concat(digits[p])
}
return digits
}
return [1]
};

An awesome answer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
let p = digits.length - 1
for (let i = p; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++
return digits
}
digits[i] = 0
}
digits.unshift(1)
return digits
};