66. Plus One

看答案写的,我也写了一个算法,还算能够,不过除了点小问题,没改,我就不贴了。git

我看到这个答案,我感受人家的算法是怎么写出来的,为何这么精致,厉害厉害,反正我是菜算法

class Solution {
    public int[] plusOne(int[] digits) {
        
        int leng = digits.length;
        for(int i = leng - 1;i >= 0;i--){
           
           if(digits[i] < 9){
               digits[i]++;
               return digits;
           }
            
           digits[i] = 0;
       }
        
        int[] res = new int[leng + 1];
        res[0] = 1;
        return res;
        
    }
}数组

总结:这题我最开始都没理解,查了几个博客才知道什么意思,int [] a = {1,2,3};至关于int b = 123;就是把整数的每一位都存到数据里面,而后返回int b = 123 + 1的数组,返回int [] c = {1,2,4}; 博客

1.从后往前遍历各位置,当小于9的时候,加1不会对前一位有影响,因此直接返回就数组就能够。it

2.当等于9的时候,该位赋0,若是该位置不是最后一位,则判断下一位,由于小于9的都会自增,因此不用考虑进位问题了,若是是最后一位,则条出循环,建立新数组,并在index = 0位置赋值1,返回该数组。io

这个算法我最喜欢的就是if(digits[i] < 9){digits[i]++;return digits;},真是太厉害了,怎么相出来的呢,我根本没有想到,能够写的这么巧妙,我好菜啊
               
               
           class

相关文章
相关标签/搜索