66. Plus One

    /*
     * 66. Plus One 
     * 12.5 by Mingyang
     * 不用把array返回来,直接加
     * 首先是我的代码,我就是全部走了一遍,老老实实一个一个的处理
     * 这么就会慢一点
     */
     public int[] plusOne1(int[] digits) {
            int len=digits.length;
            if(len==0||digits==null)
              return null;
            int add=1;
            boolean hasMore=false;
            for(int i=len-1;i>=0;i--){
                int temp=add+digits[i];
                digits[i]=temp%10;
                add=temp/10==0?0:1;
            }
            if(add==0){
                return digits;
            }
            int[] res=new int[len+1];
            res[0]=1;
            for(int i=1;i<res.length;i++){
                res[i]=digits[i-1];
            }
            return res;
        }
      /*
       * 这个网上流行的代码就更好,因为只有加1超过10的情况我才继续加加
       * 否则就不需要进行讨论,直接break掉
       * 两个代码效率很不一样的
       */
    public int[] plusOne(int[] digits) {
        int length;
        length = digits.length;
        for (int i = length - 1; i >= 0; i--) {
            if (digits[i] < 9) {
                digits[i]++;
                break;
            } else {
                digits[i] = 0;  //等于9
            }
        }
        int[] newdigits;
        if (digits[0] == 0) { //多一个位数,也就是多了一个第一位
            newdigits = new int[digits.length + 1];
            newdigits[0] = 1;
            for (int i = 1; i < newdigits.length; i++) {
                newdigits[i] = digits[i - 1];
            }
        } else {
            newdigits = new int[digits.length];
            for (int i = 0; i < digits.length; i++) {
                newdigits[i] = digits[i];
            }
        }
        return newdigits;
    }
原文地址:https://www.cnblogs.com/zmyvszk/p/5476650.html