66. Plus One | leetcode 66 Java 最短代码实现

原题链接: 66. Plus One

【思路】

题目的要求模仿整数加法,将 digits 加1,digits 数组中的每个元素只能存放小于10的数,那么就中规中矩地从 digits 数组的最右边加起,设置一个进位值 c,逢10进1:

    public int[] plusOne(int[] digits) {
        int c = 1;
        for (int i = digits.length - 1; i >= 0; i--) {
            int sum = digits[i] + c;
            if (sum < 10) {  //如果和小于10,就可以跳出循环。
                digits[i] = sum;
                return digits;
            } else {  //继续进行 digit[i]和 c 的相加操作。
                digits[i] = 0;
                c = 1;
            }
        }
        if (c == 1 && digits[0] == 0) {  //发现新数组长度超过 digits,那么重新申请一个新数组,将值完全移过去。
            int[] newDigits = new int[digits.length + 1];
            for (int i = 1; i < digits.length; i++)
                newDigits[i + 1] = digits[i];
            newDigits[0] = 1;
            return newDigits;
        }
        return digits;
    }
108 / 108  test cases passed. Runtime: 0 ms  Your runtime beats 41.14% of javasubmissions.

你可能感兴趣的:(java,LeetCode)