[Leetcode] plus one 加一

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 };

 

posted @ 2017-06-30 09:45  王大咩的图书馆  阅读(188)  评论(0编辑  收藏  举报