- 这道题一开始我也理解只是单纯的数组的最后一位数加1,其实并非如此
我理解的要求是这样的:
- 只要不是碰到单个数字为9的,都可以直接加1,比如说两位数字含9的也直接加一
- 如果碰到单个数字为9,比如说[9]、[9,9,9]、那么按进位的形式得到新的数组[9]对应为[1,0],[9,9,9]对应为[1,0,0,0]
- 代码如下:
var plusOne = function (digits) {
let digit = []
for (let i = digits.length - 1; i >= 0; i--) { //从数组的最后一位数开始遍历
if (digits[i] !== 9) { //判断是否为单个数9
digits[i] = digits[i] + 1
return digits
}
else {
digits[i] = 0 //为9则将最后一位数设为0
}
}
digit.unshift(1) //新数组第一位设为1
return [...digit, ...digits] //用扩展运算符进行数组结合
};