Given a number represented as an array of digits, plus one to the number.
题意:给定数以数组的形式存储,然后计算该数加1的值。
思路:一般遇到这种以数组,或字符串形式的数相加的问题,都是从右往左遍历(因为,数的低位在右边),用一个中间变量去保存对应位的和,然后求余,求进位值。整个结果需新建一个数组保存,因为最后可能需进位,如 add binary。但这里只是加1,我们只需要判断整个数组所有的元素的值是不是都是9,若是,则要进位,(处理技巧)这时,我们可以将digits[0]赋值为1,在数组的最后压入0即可;若不是,则只需在对应位加1即可。代码如下:
1 class Solution { 2 public: 3 vector<int> plusOne(vector<int> &digits) 4 { 5 int len=digits.size(); 6 for(int i=len-1;i>=0;i--) 7 { 8 if(digits[i]==9) 9 digits[i]=0; 10 else 11 { 12 ++digits[i]; 13 return digits; 14 } 15 } 16 digits[0]=1; 17 digits.push_back(0); 18 return digits; 19 } 20 };