题目:Given a number represented as an array of digits, plus one to the number.
题意动态数组存了一些个位数字,组成一个大数,计算这个大数加一之后的值。
模拟大数的加法,当没有进位的时候就可以弹出循环。
特殊考虑各个位数就是9的情况,加一后会多出一位,即结果是1加上len个0,len是digits的长度。
class Solution {
public:
vector<int> plusOne(vector<int> &digits) {
int i,p,temp,len=digits.size();
for(i=0;i<len;++i)
{
if(digits[i]!=9)break;
}
if(i==len)
{
vector<int>result;
result.push_back(1);
for(i=0;i<len;++i)result.push_back(0);
return result;
}
digits[len-1]+=1;
p=0;
for(i=len-1;i>=0;--i)
{
temp=digits[i]+p;
digits[i]=temp%10;
p=temp/10;
if(p==0)break;
}
return digits;
}
};
// http://blog.csdn.net/havenoidea/