1. 程式人生 > >leetcode (Plus One)

leetcode (Plus One)

Title: Plus One    66

Difficulty:Easy

原題leetcode地址:https://leetcode.com/problems/plus-one/submissions/

 

1. 具體說明詳見程式碼中的註釋,時間&空間複雜度如下:

時間複雜度:O(n),一層while迴圈,遍歷的是陣列的長度。

空間複雜度:O(n),申請了n+1的空間。

    /**
     * 在這個數的最後一位加1,
     *      如果最後一位小於9,那麼直接返回加1後的結果
     *      如果最後一位是9,那麼需要將最後一位修改為0,同時向前進1,即在倒數第二位上加1,同樣需要判斷倒數第二位是不是9,依次判斷到第一位數
     *      如果這個數的每一位都是9,那個需要重新申請一個比原來數長度大一的陣列,且第一位賦值為1
     * @param digits
     * @return
     */
    public static int[] plusOne(int[] digits) {

        for (int i = digits.length - 1; i >= 0; i--) {
            if (digits[i] < 9) {
                digits[i] += 1;
                return digits;
            }
            if (digits[i] == 9) {
                digits[i] = 0;
            }
        }

        int result[] = new int[digits.length + 1]; // 初始化的陣列預設的為0
        result[0] = 1;
        return result;

    }