数组_66加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
Related Topics
  • 数组
  •     public int[] plusOne(int[] digits) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < digits.length; i++) {
                sb.append(digits[i]);
            }
            String s = sb.toString();
            BigDecimal value = new BigDecimal(s);
            char[] chars = String.valueOf(value.add(new BigDecimal(1))).toCharArray();
            int[] sum = new int[chars.length];
            for (int i = 0; i < chars.length; i++) {
                sum[i] = ( chars[i]-'0');
            }
            return sum;
        }
    

    这是我原来三天前的思路。想转成整数然后相加,把计算交给程序,奈何随着输入的数组长度越来越长,总是会溢出,然后我看了思路,觉得自己太傻,就为了自己省事,唉,在做算法题啊。

    以下是我看完思路后,三天后独立完成的。

    
    public int[] plusOne(int[] digits) {
            for (int i = digits.length - 1; i >= 0; i--) {
                if (digits[i]+1<10){
                    digits[i]=digits[i]+1;
                    break;
                }else {
                    digits[i]=0;
                }
            }
            if (digits[0] == 0) {
                int[] ints = new int[digits.length + 1];
                ints[0]=1;
                return ints;
            }
            return digits;
        }
    
    

    你可能感兴趣的:(数组_66加一)