leetcode (Plus One)
阿新 • • 發佈:2018-11-21
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; }