思路:① 如果末位<9,该位++
② 否则,从末位开始 通过i的移动,找第一个不是9的 让它++,后面的位全部置0
注意:在②中,可能这个数组全是9 那么i最终是-1 再用i访问数组会出错,这时干脆先clear(),然后push_back(1),然后再放入 digits.size个0
class Solution {
public:
static vector<int> plusOne(vector<int>& digits) {
int n = (int)digits.size();
int i, j;
if (digits[n - 1] <= 8)
{
digits[n - 1]++;
return digits;
}
else {
for (i = n - 1; i >= 0; i--)
{
if (digits[i] != 9) break;
}
if (i == -1)
{
digits.clear();
digits.push_back(1);
for (j = 0; j < n; j++)
digits.push_back(0);
return digits;
}
else{
digits[i]++;
i++;
for (i; i <= n - 1; i++)
digits[i] = 0;
return digits;
}
}
}
};