Given a non-empty array of digits representing a non-negative integer,
plus one to the integer.

The digits are stored such that the most significant digit is at the
head of the list, and each element in the array contain a single
digit.

You may assume the integer does not contain any leading zero, except
the number 0 itself.

Example 1:

Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

思路

从数组最后一位开始加1, 如果有进位就继续往前+1, 直到没有进位位置。 conner case是数组所有的数字都是9, 这样的话就需要重新new一个数组, 长度是以前数组长度+1, 第一位是1.

复杂度

时间O(n) 空间O(1) 不new新数组 O(n) new 新数组

代码

class Solution {
    public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >=0; i--) {
            if (digits[i] +1 == 10) {
                digits[i] = 0;
            } else {
                digits[i] += 1;
                return digits;
            }
        }
        int[] res = new int[digits.length +1];
        res[0] = 1;
        return res;
    }
}

lpy1990
26 声望10 粉丝