1、从后向前遍历
我们可以从后向前遍历数组,针对不同的情况进行操作:1、若当前数字不为9,则我们直接将数字的值加一并返回即可;2、若当前数字为9,我们将当前数字置为0并对前一位执行加一操作;3、若所有数字都为9,则我们需要构建一个新数组,长度比原来加一,首位为1,其余为0。
class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
bool add = true;
int n = digits.size();
for (int i = n - 1; i >= 0; --i) {
if (digits[i] == 9) {
digits[i] = 0;
} else {
++digits[i];
add = false;
break;
}
}
if (add) {
vector<int> res(n + 1);
res[0] = 1;
for (int i = 0; i < n; ++i) {
res[i + 1] = digits[i];
}
return res;
} else {
return digits;
}
}
};