Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.
水题一道,看题目可能不是很明白,可以调试一下看看输出,当vector的首元素也即是number的最高位需要进位时,这时候vector就需要resize以下了。注意到这个情况下面就是敲代码了:).C++代码如下:
class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
bool addHead = false;
int i = (digits.size() - 1);
digits[i] += 1;
while( digits[i]>= 10)
{
if(i>0)
{
digits[i] = 0;
digits[i-1] += 1;
}
else
{
digits[i] = 0;
addHead = true;
}
i--;
}
if(addHead)
{
digits.resize(digits.size() + 1);
for(int i =digits.size(); i >0 ; i--)
{
digits[i] = digits[i-1];
}
digits[0] = 1;
}
return digits;
}
};