思路
要將數字加一,用直式加法的方式,從個位數開始加,假如進位就繼續,沒有就停。
程式碼
模擬
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int carry = 1;
for(int i = digits.size() - 1; i >= 0; --i) { // 從個位數開始加
int sum = digits[i] + carry;
carry = sum / 10;
digits[i] = sum % 10;
if(!carry) break; // 沒有進位,表示加一操作已經完成,可以直接 return
}
if(carry) digits.insert(digits.begin(), 1); // 直到最後都有進位,表示需要在最前面加一個 1
return digits;
}
};
複雜度分析
- 時間複雜度:
- 空間複雜度:,原地修改。