[LeetCode] #66 Plus One 解題

題目連結

題型解說

這是一題難度為簡單的題目

需要設計一個方法,此方法會傳入一個整數陣列 digits

將這個陣列看作一串數字的組合,把數字 + 1 後回傳

範例:

digits = [1,2,3],則回傳 [1,2,4],因為 123 + 1 = 124

解題思路

一開始走了彎路,寫了很多判斷和使用 List 來應付位數增加的情況

後來研究其他人的寫法後才恍然大悟,因為忽略了一個很簡單的事實

位數增加的情況就只會是 9、99、999、9999...等等

加上 1 後變成 10 100 1000 10000,也就只有這個情況位數才會增加

只要其中一位數不是 9 ,就可以直接回傳了

程式碼

Java

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

            digits[i] = 0;
        }
    
        // 只有全部的位數都是 9 的情況才會跑完迴圈,故只要將第一位變成 1 就好
        int[] result = new int [digits.length + 1];
        result[0] = 1;

        return result;
    }
}