主要思路是从最后一位判断+1后是否大于10,如果大于则需要向前移一位继续判断,不大于则直接return即可,如果循环完数组还是carry还是大于1则需另创数组。
public class Solution {
public int[] plusOne(int[] digits) {
if (digits.length == 0) return digits;
int carry = 1, n = digits.length;
for (int i = digits.length - 1; i >= 0; --i) {
if (carry == 0) return digits;
int sum = digits[i] + carry;
digits[i] = sum % 10;
carry = sum / 10;
}
int[] res = new int[n + 1];
res[0] = 1;
return carry == 0 ? digits : res;
}
}