思路不够清晰。并不需要一位一位加,可以在循环中间返回的
class Solution
{
public:
vector<int> plusOne(vector<int> &digits)
{
if(digits[0]==0)
{
digits[digits.size()-1]=1;
return digits;
}
bool addforward = 1;
for (int i = digits.size() - 1; i >= 0; i--)
{
if (digits[i] + addforward > 9)
{
digits[i] = 0;
addforward = 1;
}
else
{
digits[i] += addforward;
addforward = 0;
}
}
if (digits[0] == 0)
{
digits.insert(digits.begin(),1);
}
return digits;
}
};
这样考虑清楚后,最开始判定如果digits是连续00的情况,也可以省去了
class Solution
{
public:
vector<int> plusOne(vector<int> &digits)
{
for (int i = digits.size() - 1; i >= 0; i--)
{
if (digits[i] + 1 > 9)
digits[i] = 0;
else
{
digits[i] += 1;
return digits;
}
}
if (digits[0] == 0)
digits.insert(digits.begin(), 1);
return digits;
}
};