给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:
输入:digits = [0]
输出:[1]

示例 4:
输入:digits = [9,9,9]
输出:[1,0,0,0]
    public static void main(String[] args) {
        int[] arr = new int[]{9, 9, 9, 9};
        System.out.println("数组加一前: " + Arrays.toString(arr));

        arr = plusOne(arr);
        System.out.println("数组加一后: " + Arrays.toString(arr));
    }
    
    ---------------------------------------------------------------
    执行结果
    数组加一前: [9, 9, 9, 9]
    数组加一后: [1, 0, 0, 0, 0]
    ---------------------------------------------------------------

    private static int[] plusOne(int[] digits) {
        boolean isAddLength = false;

        for (int i = digits.length-1; i >=0 ; i--) {
            int temp = digits[i] + 1;
            if (temp % 10 == 0) {
                if (i == 0){
                    isAddLength = true;
                }
                digits[i] = 0;
                continue;
            }
            digits[i] = temp;
            break;
        }
        if (isAddLength){
            digits = new int[digits.length+1];
            digits[0] = 1;
        }
        return digits;
    }
最后修改:2022 年 05 月 23 日
如果觉得我的文章对你有用,请点个赞吧~