思路:
1.如果最后一位小于9,则digits[length-1]++,返回
2.如果最后一位大于8,则循环访问数组,直至某位数<10,就退出循环
3.如果最后得到的进位>0,则需要将数组长度扩大1,原来的数组往后平移
public int[] plusOne(int[] digits) {
int length = digits.length;
int add = 0,i = length-1,jin = 0;
if(digits[i] < 9){
digits[i]++;
return digits;
}
digits[i]++;
for(i = length-1;i>=0;i--){
add = jin+digits[i];
if(add>9){
digits[i] = add%10;
jin = add/10;
}else{
digits[i] = add;
jin = 0;
break;
}
}
if(jin > 0){
int [] ret = new int[length+1];
ret[0] = jin;
for(int j = 0;j<length;j++){
ret[j+1]= digits[j];
}
return ret;
}
return digits;
}