<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; }