Plus One

思路:

1.如果最后一位小于9,则digits[length-1]++,返回

2.如果最后一位大于8,则循环访问数组,直至某位数<10,就退出循环

3.如果最后得到的进位>0,则需要将数组长度扩大1,原来的数组往后平移

public int[] plusOne(int[] digits) {
        int length = digits.length;
        int add = 0,i = length-1,jin = 0;
        if(digits[i] < 9){
            digits[i]++;
            return digits;
        }
        digits[i]++;
        for(i = length-1;i>=0;i--){
            add = jin+digits[i];
            if(add>9){
                digits[i] = add%10;
                jin = add/10;
            }else{
                digits[i] = add;
                jin = 0;
                break;
            }
        }
        if(jin > 0){
            int [] ret = new int[length+1];
            ret[0] = jin;
            for(int j = 0;j<length;j++){
                ret[j+1]= digits[j];
            }
            return ret;
        }
        return digits;
    }



你可能感兴趣的:(Plus One)