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