题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
可以将1也看做一个元素只有一个的数组,即加一可以转化为两个数组相加。分别定义两个指针,从右往左遍历,模拟加法运算。
public int[] plusOne(int[] digits) {
List<Integer> list = new ArrayList<Integer>();
int i = digits.length-1;
int j = 0;
int flag = 0;
while(i>=0||j>=0){
int a = i>=0?digits[i--]:0;
int b = j-->=0?1:0;
a = a + b + flag;
if(a>=10){
flag = 1;
a = a - 10;
}else{
flag = 0;
}
list.add(a);
}
if(flag==1){
list.add(1);
}
int[] result = new int[list.size()];
for(int k=0;k<result.length;k++){
result[k] = list.get(result.length-1-k);
}
return result;
}