数值数组加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
1.第一时间想到的就是转成数值类型加一再转成数组
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
return ((Number(digits.join('')) + 1) + '').split('')
};
然而当数组位数过大时因为精度问题,用例就通过不了,所以此方法不可行
2.倒序遍历若当前遍历元素为9,则置值为0,若此时为数组下标为0,则在数组前添加一个元素为1。若当前遍历元素不为9则当前元素+1,并结束遍历。
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
for (let i = digits.length -1; i >= 0; i--) {
if (digits[i] == 9) {
digits[i] = 0
if (i === 0) {
digits.unshift(1)
}
} else {
digits[i]++
return digits
}
}
return digits
};
3.倒序遍历遇到9设置为0,直到遇到不为9时将元素+1,并返回数组,若数组元素全为9,则在数组前添加一个元素为1。
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
for(let i = digits.length - 1; i >= 0; i--) {
if (digits[i] === 9) {
digits[i] = 0
} else {
digits[i]++
return digits
}
}
digits.unshift(1)
return digits
};
题目来源:力扣(LeetCode)