1. 程式人生 > >leetcode 66 加一 c++

leetcode 66 加一 c++

題目: 給定一個由整陣列成的非空陣列所表示的非負整數,在該數的基礎上加一。

最高位數字存放在陣列的首位, 陣列中每個元素只儲存一個數字。

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

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

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

思路: 這道題屬於簡單題,思路就是從最低位迴圈開始向前檢查當前位是否小於9,如果小於9就直接令當前位加1,返回陣列即可,如果等於9就令當前位為0繼續向前檢查直到到達最高位為止,如果迴圈結束還沒有返回值則說明此時數組裡全是9,此時我們就返回一個最高位為1其餘全為0且位數比原數多1位的陣列即可。

程式碼 :

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