结果
代码:
class Solution {
public int[] plusOne(int[] digits) {
boolean needNew = false;
for(int i = digits.length-1;i>=0;--i){
int now = digits[i];
now++;
if(now>=10){
now = 0;
digits[i] = now;
needNew = true;
}else{
digits[i] = now;
needNew = false;
break;
}
}
if(!needNew){
return digits;
}else{
int[] ints = new int[digits.length+1];
ints[0] = 1;
for(int i = 1;i<ints.length;i++){
ints[i] = digits[i-1];
}
return ints;
}
}
}
过程
很简单,首先从后往前遍历,最后一位进一,如果有进位,前一位再加一,循环到头,发现首位依然需要进位,这时候构建一个新的数组,首位放1,其余为把之前的数组放进去即可。如果是为了代码优美的话,这些判断可以用取余代替即可。