leetcode-數組-簡單-加一

題目

給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。最高位數字存放在數組的首位, 數組中每個元素只存儲單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/plus-one
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

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

解答

方法一:

這個題目主要就是考慮一個進位的問題,我的想法是這樣的,只有某位的數字是9纔會發生進位,不是9是不會進位,9進位之後就變成了0。那麼這個問題就變成,尋找第一個不是9 的數字。如果找完整個數組都沒有找到不是9的,那麼直接增加一位。找到第一個不是9的數字之後對這個數字 + 1,把後邊的數字全部變成0就可以了。

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        ///找到第一個不爲9的數,然後把這個數+1 後邊的數據全部變成0
        int i = digits.size() - 1;
        for (; i >= 0;) {
            if (digits[i] == 9) {
                digits[i] = 0;
                i--;
            } else {
                digits[i] += 1;
                break;
            }
        }     
        if (i == -1) {
            vector<int> ret(digits.size() + 1);
            ret[0] = 1;
            return ret;
        } else {
            return digits;
        }
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章