66. Plus One

这道题没什么难度,但是之前看到过一种方法写得很好看。

因为这道题不是加上一位数,是加1,所以只有两种情况:

1. 该位是9,所以变成0,循环继续

2. 该位不是9,那就这位+1,然后返回

如果进行完了循环仍没有返回,说明整个数都是999999,那么就需要补一位,并且这个数是类似于100000...这样的。

我开始试过转换成ArrayList做,但是吃力不讨好,直接建一个比原来长一位的int数组,把array[0]改成1就好了

这样写出来很漂亮。

 1     public int[] plusOne(int[] digits) {
 2         if(digits == null || digits.length == 0) {
 3             return digits;
 4         }
 5         int len = digits.length;
 6         for(int i = len - 1; i >= 0; i--) {
 7             if(digits[i] == 9) {
 8                 digits[i] = 0;
 9             } else {
10                 digits[i] += 1;
11                 return digits;
12             }
13         }
14         int[] res = new int[len + 1];
15         res[0] = 1;
16         return res;
17     }

bug记录

就是看错了题目,最重要的在开头而不是结尾

posted @ 2016-02-29 10:18  warmland  阅读(203)  评论(0编辑  收藏  举报