Given a number represented as an array of digits, plus one to the number.

题意:给定数以数组的形式存储,然后计算该数加1的值。

思路:一般遇到这种以数组,或字符串形式的数相加的问题,都是从右往左遍历(因为,数的低位在右边),用一个中间变量去保存对应位的和,然后求余,求进位值。整个结果需新建一个数组保存,因为最后可能需进位,如add binary。但这里只是加1,我们只需要判断整个数组所有的元素的值是不是都是9,若是,则要进位,(处理技巧)这时,我们可以将digits[0]赋值为1,在数组的最后压入0即可;若不是,则只需在对应位加1即可。代码如下:

 class Solution {
public:
vector<int> plusOne(vector<int> &digits)
{
int len=digits.size();
for(int i=len-;i>=;i--)
{
if(digits[i]==)
digits[i]=;
else
{
++digits[i];
return digits;
}
}
digits[]=;
digits.push_back();
return digits;
}
};
05-20 09:25