Description:
Given a number represented as an array of digits, plus one to the number.
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
vector<int> plusOne(vector<int> &digits)
{
//从右到左遍历
add(digits,1);
return digits;
}
private:
void add(vector<int> &digits,int digit)
{
// 0 <= digit <= 9
int c = digit; //carry,进位
for (auto iter = digits.rbegin(); iter != digits.rend(); ++iter)
{
*iter += c;
c = (*iter)/10;
*iter = (*iter)%10;
}
if (c > 0) digits.insert(digits.begin(),1);
}
};
int main()
{
vector<int> digits = {2,3,5,9,9};
vector<int> result;
cout<<"原来的数组: ";
for (size_t i = 0 ; i < digits.size(); ++i)
cout<<digits[i];
cout<<endl;
Solution solution;
result = solution.plusOne(digits);
cout<<"进位后: ";
for (size_t i = 0 ; i < result.size(); ++i)
cout<<result[i];
cout<<endl;
return 0;
}