leetcode 66 加一 c++
阿新 • • 發佈:2018-12-14
題目: 給定一個由整陣列成的非空陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存一個數字。
你可以假設除了整數 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;
}
};