题目来源
有一个数组代表一个非负的数字,求这个数字+1之后的数组。
比如这个数组是[1,2,3,4]它代表数字1234,那么这个数字加1之后是1235。希望得到这个数字代表的数组[1,2,3,5]
思路
从最后一位开始,对当前值+1,如果当前值不为9则正常返回结果。如果当前值为9,则当前值变为0,再递归调用前一位的+1操作。
实现
JavaScript:
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
function plus(digits,i){
if(digits[i]===9){
digits[i]=0;
if(i===0){
var head = [1];
return head.concat(digits);
}else{
return plus(digits,i-1);
}
}else{
digits[i] = digits[i]+1;
return digits;
}
}
return plus(digits,digits.length-1);
};
PS:上面的代码性能不是很好,肯定有更好的算法的。