<span style="background-color: rgb(255, 255, 255);"><span style="font-family:Courier New;font-size:18px;">原题目:</span></span>
Given a number represented as an array of digits, plus one to the number.
题目的意思是一个用数组表示的数字,在加一后仍然用这个数组表示,加一后位数可能会增加,故最好用vector<int>表示.
<span style="font-family:Courier New;font-size:18px;">class PlusOne
{
public:
vector<int> plus(vector<int> &digits)
{
add(digits,1);
return digits;
}
private:
void add(vector<int> &digits,int value)
{
/* int i;
int c=value;
int n=digits.size();
for (i = n-1; i>=0;i--)
{
digits[i]+=c;
c=digits[i]/10;
digits[i] %=10;
}
if (c>0)
{
digits.insert(digits.begin(),c);
}
}*/
/* int carry=value;
for(vector<int>::reverse_iterator i=digits.rbegin();i!=digits.rend();++i)
{
*i=*i+carry;
carry=*i/10;
*i=*i%10;
}
if (carry>0)
{
digits.insert(digits.begin(),carry);
}*/
}
};</span>
vector<int> plus2(vector<int> &digits)
{
for (int i = digits.size()-1; i >=0 ; i--)
{
if (digits[i]!=9)
{
++digits[i];
return digits;
}
else
{
digits[i]=0;
}
}
if (i<0)
{
digits.insert(digits.begin(),1);
}
return digits;
}