【中规中矩】66. 加一 (C++/Python 数组操作)
该题是两数相加的简化版。初始化carry为1,倒序加carry即可。如若最后carry>0需要在数组开头再插入一个carry值。
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
assert(!digits.empty());
int carry = 1;
int N = digits.size();
int i = N - 1;
while (i >= 0) {
int sum = digits[i] + carry;
int digit = sum % 10;
carry = sum / 10;
digits[i] = digit;
i--;
}
if (carry > 0) {
digits.insert(digits.begin(), carry);
}
return digits;
}
};
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
carry = 1
N = len(digits)
i = N - 1
while (i >= 0) :
sum = digits[i] + carry
digit = sum % 10
carry = sum // 10
digits[i] = digit
i -= 1
if (carry > 0) :
# digits.insert(0, carry)
digits = [carry] + digits
return digits