1. 题目
2. 解题思路
- 这里用
for
循环来控制进位; - 从最后一位开始,在每一个
digits[i]
加一,加完之后进行% 10
操作,如果符合进位条件,那么就继续进行循环,同时由于进行了% 10
操作,所以这个位置会变成0
;如果不符合进位条件,% 10
之后还是原来的数。 - 如果进位可以一直进行下去不跳出,那么等最后
i = 0
的时候,所有的位置都会变成0
,这个时候只需要在全0
数组的第一个位置设置成1
即可。
3. 代码
class Solution {
public int[] plusOne(int[] digits) {
for (int i = digits.length-1 ; i >=0 ; i--) {
digits[i] = digits[i]+1;
digits[i] = digits[i] % 10;
if (digits[i]!=0) return digits;
}
digits = new int[digits.length+1];
digits[0] = 1;
return digits;
}
}