非負整數以數組形式存儲(最高位在前),如 [1,0,9] 代表 109。實現加 1 操作,返回新數組。
class Solution {
public:
vector plusOne(vector& digits) {
int n = digits.size();
vector res;
res.reserve(n+1);
int carry = 1;
for (int i = n-1; i >= 0; --i) {
int sum = digits[i] + carry;
res.push_back(sum % 10);
carry = sum / 10;
}
if (carry) res.push_back(carry);
reverse(res.begin(), res.end());
return res;
}
};
for (int i = n-1; i >= 0 && carry; --i) {
digits[i] += carry;
carry = digits[i] / 10;
digits[i] %= 10;
}
if (carry) digits.insert(digits.begin(), 1);
return digits;
Plus One 是大整數加法的最簡形式。**從低位向高位模擬進位** 是通用大整數加法的核心邏輯。反向存儲避免了 `vector::insert(begin())` 的 O(n²) 移動開銷,是工程優化的好習慣。