首先给出一个超出时间限制,但是正确的办法:
class Solution {
public:
bool isAll9(vector<int>& digits)
{
int i=0;
while(i<digits.size())
{
if(digits[i]!=9)
{
return false;
}
}
return true;
}
vector<int> plusOne(vector<int>& digits) {
if(isAll9(digits))
{
digits[0]=1;
for(int i=1;i<digits.size();i++)
{
digits[i]=0;
}
digits.push_back(0);
return digits;
}
else
{
int j=digits.size()-1;
while(digits[j]==9)
{
j--;
}
digits[j]+=1;
j=j+1;
while(j<digits.size())
{
digits[j]=0;
j++;
}
return digits;
}
}
};
下面给出的这个算法是模拟加法器的工作原理,思路简单,易于理解,而且成功通过。
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
for(int i=digits.size()-1;i>=0;i--)
{
++digits[i];
if(digits[i]%10!=0)
{
return digits;
}
else
{
digits[i]=0;
}
}
digits.insert(digits.begin(),1);
return digits;
}
};