加一js实现,LeetCode66
目录
加一(js实现,LeetCode:66)
这道题看起来就是一个整数+1,然后将整数拆为数组,但是在实现的思路上这更像是一个计算器,+1有三种情况
1、末位+1之后不需要向高位进1
2、末位+1之后需要向高位进1但是整数的量级不变(长度)
3、末位+1之后需要向高位进1但是整数量级变化(长度+1)
这里先上代码
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function (digits) {
let len = digits.length
if (digits[len - 1] + 1 < 10) {
digits[len - 1] += 1
} else {
const add = () => {
digits[len - 1] += 1
if (digits[len - 1] == 10) {
digits[len - 1] = 0
len -= 1
add()
}
}
add()
if (digits[0] == 0) {
digits[0] += 1
digits.push(0)
}
// digits.push(0)
}
return digits
};
第一种和第二种情况很好理解:通过本位+1之后与10比较来决定是否需要进位,第三种情况:满10之后将本位置0,所以按照add()递归后的结果首位为0,根据这一特性我们可以判断末位+1之后整数的量级发生了变化,我们将头位加1并且push一位进末位即可