给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。 输入:digits = [9,8,9] 输出:[9,9,0] 解释:输入数组表示数字 989。
class Solution {
public int[] plusOne(int[] digits) {
int len=digits.length;
if(digits[len-1]!=9){//最后一位不是9的话直接+1返回
digits[len-1]++;
return digits;
}
int j=0;
for(int i:digits){
if(i!=9)break;
j++;
}
if(j==len){//如果全都为9的话j==len
int []newdigits=new int[len+1];
newdigits[0]=1;
return newdigits;
}
digits[len-1]++;
for(int i=len-1;i>=0;i--){//逢十进一
if(digits[i]==10){
digits[i]=0;
digits[i-1]++;//不用担心溢出,第一位需要进一的情况前面已经考虑过了
}
}
return digits;
}
}