本题需要考虑的情况就是各位加一后有无进位。如果有进位,则该位置0,继续判断下一位。
更简明的思路是,从后向前遍历数组元素,若元素为9,则当前位置0,若不为9,则当前位加1后直接返回数组,结束循环。
特殊情况:当各位都是9时,将首元素置1后,还需在末尾添加一个0。
附上代码:
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int len = digits.size();
if (digits[len-1] == 9)
{
int x = 1;//下标指针
while (x <= len && digits[len-x] == 9)
{
digits[len-x] = 0;
x++;
}
if (x > len)
{
digits[0] = 1;
digits.emplace_back(0);
}
else
digits[len-x] += 1;
}
else
digits[len-1] += 1;
return digits;
}
};