这道题目要求整数数组加1,考的点无非就是数组的遍历,不过这道题目是要倒着遍历而已。联想到我们计算加法时候的法则,如果某位数字加1超过10那么就要进位,所以要有一个变量标识这个进位位,特别注意最高位是9并且发生进位的情况
public class plusOne {
public static void main(String[] args) {
int[] arr = {8,9,9,9};
int[] brr = plusOne(arr);
for(int i = 0;i<brr.length;i++) {
System.out.println(brr[i]);
}
}
public static int[] plusOne(int[] arr) {
int count = 0;
int len = arr.length;
for(int i = len-1;i>=0;i--) {
int num = 0;
if(i==len-1) {
num = arr[i] + 1;
} else {
num = arr[i] +count;
}
if(num >= 10) {
arr[i] = num % 10;
count = num / 10;
} else {
arr[i] = num;
count = 0;
}
}
if(count >= 1) {
int[] brr = new int[len+1];
brr[0] = 1;
for(int i = 1;i<brr.length;i++) {
brr[i] = arr[i-1];
}
return brr;
} else {
return arr;
}
}
}