66.Plus One

题目链接

题目大意:输入十进制数组,组成一个数,在最末位+1,然后输出最后结果。例子如下:

法一:直接用类似大数加法的做法,最末位+1,然后输出最后结果,要注意的是,最后可能有进位,比如999的情况。代码如下(耗时1ms):

 1     public int[] plusOne(int[] digits) {
 2         int pos = digits.length - 1;
 3         int flag = (digits[pos] + 1) / 10;
 4         digits[pos] = (digits[pos] + 1) % 10;
 5         pos--;
 6         while(pos >= 0) {
 7             int num = digits[pos] + flag;
 8             digits[pos] = num % 10;
 9             flag = num / 10;
10             pos--;
11         }
12         if(flag == 0) {
13             return digits;
14         }
15         int[] res = new int[digits.length + 1];
16         res[0] = 1;
17         for(int i = 0; i < digits.length; i++) {
18             res[i + 1] = digits[i];
19         }
20         return res;
21     }
View Code

猜你喜欢

转载自www.cnblogs.com/cing/p/9114882.html