ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

加1

2022-07-22 14:10:31  阅读:136  来源: 互联网

标签: digits ints1 int length ints new


介绍:将一个数组看成数字,在末位加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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有