天天看點

LeetCode 66.Plus One (加一)

題目描述:

給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。

最高位數字存放在數組的首位, 數組中每個元素隻存儲一個數字。

你可以假設除了整數 0 之外,這個整數不會以零開頭。

示例 1:

輸入: [1,2,3]
輸出: [1,2,4]
解釋: 輸入數組表示數字 123。
           

示例 2:

輸入: [4,3,2,1]
輸出: [4,3,2,2]
解釋: 輸入數組表示數字 4321。
           

AC C++ Solution:

從右往左判斷每位是否為9,隻要是9則賦為0,當遇到第一位不是9的數時,目前位加1并傳回。

若所有數字都為9,則把開頭賦為1,後面加個0代表進位。

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int n = digits.size();
        
        for(int i = n-1; i >= 0; i--) {
            if(digits[i] == 9)
                digits[i] = 0;
            else {
                digits[i]++;
                return digits;
            }
        }
        
        digits[0] = 1;
        digits.push_back(0);
        return digits;
    }
};