其他分享
首页 > 其他分享> > 加1

加1

作者:互联网

介绍:将一个数组看成数字,在末位加1;返回一个数组

eg:[1,2,3] --> 123 +1 = 124 ---> [1,2,4]

eg:[9,9] --> 99 + 1 = 100 ---> [1,0,0]

public class PlusOne {
    public static void main(String[] args) {

        int[] ints = {3, 4, 5, 3, 2, 4, 5, 8, 9};
        Solution5 solution5 = new Solution5();
        solution5.plusOne(ints);

    }
}



上面是测试:
//-------------------------------
下面是"封装"的方法:


/**
 *
 * 输入:digits = [1,2,3]
 * 输出:[1,2,4]
 * 解释:输入数组表示数字 123。
 *
 * 
 * 输入:digits = [4,3,2,1]
 * 输出:[4,3,2,2]
 * 解释:输入数组表示数字 4321。
 * 示例 3:
 *
 * 
 * 输入:digits = [0]
 * 输出:[1]
 *
 */

class Solution5 {
    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length == 0) throw new RuntimeException("输入类型有误");

        if (digits.length == 1 && digits[0] == 0) return new int[]{1};

        //为了对[9,9,9,9]这样数字,做的判断
        int n = digits.length;
        if (digits[digits.length - 1] == 9 && digits[0] == 9) {
            for (int i = n - 1; i >= 0; i--) {
                if (digits[i] == 9) {
                    digits[i] = 0;
                } else {
                    digits[i] += 1;
                    return digits;
                }
            }
            int[] ans = new int[n + 1];
            ans[0] = 1;
            //System.out.println(Arrays.toString(ans));
            return ans;
        }

        //这个对[4,9,8,9]、[4,8,9,9]的判断
        int[] ints1 = new int[digits.length];
        for (int i = 0; i < digits.length; i++) {
            ints1[i] = digits[i];
        }
        if (digits[digits.length - 1] == 9 && digits[0] != 9) {
            int digitEnd = digits[digits.length - 1];
            digitEnd = 0;
            ints1[digits.length - 1] = 0;
            for (int i = digits.length - 2; i >= 0; i--) {
                if (digits[i] < 9) {
                    int digit = digits[i];
                    int i1 = digit + 1;
                    ints1[i] = i1;
                    break;
                }
                if (digits[i] == 9) {
                    ints1[i] = 0;
                }
            }
            //System.out.println("-- :"+ Arrays.toString(ints1) );
            return ints1;
        }


        //这些是对,正常的数字[4,3,2,1],这样做判断
        int[] ints = new int[digits.length];

        int endNumber = 0;
        for (int i = 0; i < digits.length; i++) {
            if (digits[i] == digits[digits.length - 1]) {
                int digit = digits[i] + 1;
                endNumber = digit;
            }
        }

        for (int i = 0; i < digits.length - 1; i++) {
            ints[i] = digits[i];
        }
        ints[digits.length - 1] = endNumber;

        //System.out.println(Arrays.toString(ints));
        return ints;
    }
}

标签:,digits,ints1,int,length,ints,new
来源: https://www.cnblogs.com/chen-zhou1027/p/16505445.html