一、题目描述
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
二、解题思路过程
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
var n=digits.length-1;
// 判断第n数为9,如果是,需要向前进1
while(digits[n]==9){
// 进1之后,原来的9变为0
digits[n]=0;
// 向前查找,检查9之前的数字是否是9
n=n-1;
};
// 如果都变成了0 ,就在数组最前方插入一个1
// 否则,将第n个数加1
if(digits[0]==0){
digits.unshift(1);
}else{
digits[n]=digits[n]+1;
};
return digits;
};
三、复杂度分析
时间复杂度:,n为数组digits的最大长度。
空间复杂度:,使用的额外空间复杂度为常数。
四、题目来源
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/plus-one