Given a number represented as an array of digits, plus one to the number.
解题思路:
- to be honst,这道题的题意我百度了一下才知道的,2333
- 首先理解题意,给一个用数组表示的大数加上 1,然后依旧用数组返回
- 这道题的难点在于进位,解决了进位问题就差不多了
代码如下:
public int[] plusOne(int[] digits) {
int [] res = new int[digits.length + 1];
int temp = 1;
int index = res.length - 1;
// 用 temp 来记录进位
for (int i = digits.length - 1; i >= 0; i--) {
temp += digits[i];
res[index--] = temp % 10;
temp = temp / 10;
}
//如果发生进位导致在原来数字的基础上多出了一位,那么需要特殊处理一下
if(temp != 0){
res[index] = temp;
return res;
}
// 如果位数不变,那么需要处理掉数组的第 0 位
return Arrays.copyOfRange(res,1,res.length);
}