题目来源:
题目描述:
解题思路:
数字的组成有以下三种情况:
第一种:每位数字都为9,例如:99
第二种:第2~末位数字中有连续9,或末位为9,例如:199,189
第三种:末位数字不为在0~8之间,例如:188
当数字加+1时:
第一种情况下,生成一个新数组,使得第一位为1,其他位数为0,
第二种情况,遇到9的那一位数置0,前一位加1,并循环判断加1后是否为9,直到不需要进位输出
第三种情况,末位直接加一输出即可
代码如下:
class Solution {
public int[] plusOne(int[] digits) {
int digLen = digits.length;//数组长度
int i = digLen-1;//计数器
//末位不为9的情况
if(digits[i]!=9){
digits[i]++;
return digits;
}else{
//末位为9
//仅有一位数且末位为9
if(digLen==1&&digits[0]==9){
int[] newDig = new int[2];
newDig[0]=1;
return newDig;
}else{
while(i<digLen&&i>0){
digits[i]=0;
i--;
if(digits[i]!=9){//某一位数为9
digits[i]++;
return digits;
}else if(digits[0]==9){//所有位数为9
int[] digitsNew = new int[digLen+1];
digitsNew[0]=1;
return digitsNew;
}
}
}
}
return new int[]{};
}
}