給定非負整數的數組表示(最高位在前),對該整數加一,返回結果數組。
示例:[1,2,3] → [1,2,4],[9,9] → [1,0,0]。
從最低位(數組末尾)向前處理進位:
carry = 1(即加一)。sum = digits[i] + carry,digits[i] = sum % 10,carry = sum / 10。carry > 0,在數組頭部插入 carry。class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int n = digits.size();
int carry = 1;
for (int i = n - 1; i >= 0 && carry; --i) {
int sum = digits[i] + carry;
digits[i] = sum % 10;
carry = sum / 10;
}
if (carry) digits.insert(digits.begin(), carry);
return digits;
}
};
999 → 1000)。O(n),最多遍歷一次。O(1)(不計輸出),或 O(n) 若需擴容。簡單的模擬題,核心是從低位向高位處理進位,注意邊界條件與擴容。