class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int n=digits.size();
int cnt,i;
int tmp=digits[n-1]+1;
digits[n-1]=tmp%10;
cnt=tmp/10;
for(i=n-2;i>=0&&cnt;i--)
{
tmp=digits[i]+cnt;
digits[i]=tmp%10;
cnt=tmp/10;
}
if(cnt)
digits.insert(digits.begin(),cnt);
return digits;
}
};
还有一种非常巧妙的想法,只有所有位都是9,才能导致最高位进1。
class Solution {
public:
vector<int> plusOne(vector<int>& digits) {
int n=digits.size();
for(int i=n-1;i>=0;i--)
{
if(digits[i]==9)
digits[i]=0;
else
{
digits[i]++;
return digits;
}
}
digits[0]=1;
digits.push_back(0);
return digits;
}
};