您的位置:首页 > 职场人生

leetcode:Plus One (加一)【面试算法题】

2013-10-17 17:17 274 查看
题目: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/[/code] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐