首页 > 其他 > 详细

66. Plus One

时间:2016-02-29 10:34:19      阅读:191      评论:0      收藏:0      [点我收藏+]

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

因为这道题不是加上一位数,是加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记录

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

66. Plus One

原文:http://www.cnblogs.com/warmland/p/5226536.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!