数组代表一个数,每个元素代表一位,返回加1后数组的状态。
算法主要变量,carry表示进位,因为是加1所以初始为1。
从后往前遍历数组:
A[i] = (A[i] + carry)%/10
carry = (A[i]+carry)/10
循环条件,carry>1 且 没有越界。
循环结束如果carry >0 说明最高位还有仅为,数组最前端 加一位 1
vector<int> plusOne(vector<int> &digits) {
int carry = 1;
for (int i = digits.size() - 1; i >= 0 && carry > 0; --i) {
digits[i] += carry;
carry = digits[i] / 10;
digits[i] = digits[i] % 10;
}
if (carry > 0)
digits.insert(digits.begin(), 1);
return digits;
}