思路:模拟,一个方法是在digits上直接操作,另一个方法是重新建一个vector;发现第一种方法耗时比较高(4>0)
//方法一
vector<int> plusOne(vector<int>& digits) {
int temp = 1;
for (int i = digits.size() - 1; i >= 0; i--) {
int value = digits[i] + temp;
temp = value / 10;
digits[i] = value % 10;
}
if (temp) {
digits.insert(digits.begin(), 1);
}
return digits;
}
//方法二
vector<int> plusOne(vector<int>& digits) {
vector<int> res;
int temp = 1;
for (int i = digits.size() - 1; i >= 0; i--) {
int value = digits[i] + temp;
temp = value / 10;
res.push_back(value % 10);
}
if (temp) {
res.push_back(1);
}
reverse(res.begin(), res.end());
return res;
}