给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。该数字按照大小进行排列,最大的数在列表的最前面。
给定 [1,2,3]
表示 123, 返回 [1,2,4]
.
给定 [9,9,9]
表示 999, 返回 [1,0,0,0]
.
/**
* @param digits a number represented as an array of digits
* @return the result
* 不能直接将数组转为整数再计算!很可能越界!
*/
public int[] plusOne(int[] digits) {
// Write your code here
int num = digits.length;
while(true){
if(num == 0){//所有位数均为9
int newLength =digits.length+1;
int[] newDigits = new int[newLength];
newDigits[0] = 1;
for (int i = 1;i < newLength; i++){
newDigits[i] = 0;
}
return newDigits;
}
if (digits[num-1] == 9){
digits[num-1] = 0;//出现了9之后,要进位循环判断
num -= 1;
continue;
}
digits[num-1] += 1;
return digits;
}
}
}