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记录
就是看错了题目,最重要的在开头而不是结尾