美文网首页
LeetCode 每日一题 [27] 加一

LeetCode 每日一题 [27] 加一

作者: 是小猪童鞋啦 | 来源:发表于2020-06-14 09:09 被阅读0次
    LeetCode 加一 [简单]

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

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

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/plus-one

    题目分析:
    解法1:

    把数组 数据拿出来,然后拼接+1,然后再放回去,但是会有范围溢出。

    解法2

    从后向前遍历,如果不是9,就 自增,返回数组,如果是,则置零,继续for循环,循环结束之后还没有返回,那么就都是9,创建一个新的数组,长度+1,然后使得 temp[0] = 1;其他位置的值,默认是 0 ,则直接返回 temp 即可

    代码实现
    public class LeetCode_27_PlusOne {
        public static void main(String[] args) {
            for (int i = 0; i < 10; i++) {
                int[] res = SortCounterUtil.generateRandomArray(6, 9);
                SortCounterUtil.printArray(res);
                int[] temp = plusOne(res);
                System.out.println();
                SortCounterUtil.printArray(temp);
                System.out.println();
                System.out.println("------------------------------------------");
            }
        }
    
        public static int[] plusOne(int[] digits) {
            if (digits == null) {
                return null;
            }
            if (digits.length == 0) {
                return new int[]{1};
            }
            for (int i = digits.length - 1; i >= 0; i--) {
                if (digits[i] != 9) {
                    digits[i]++;
                    return digits;
                }
                digits[i] = 0;
            }
            int[] temp = new int[digits.length + 1];
            temp[0] = 1;
            return temp;
        }
    }
    
    public class SortCounterUtil {
        /**
         * 生成随机 int 数组
         *
         * @param size  数组长度
         * @param value 数组的值
         * @return 返回生成的随机数组
         */
        public static int[] generateRandomArray(int size, int value) {
            int[] arr = new int[(int) ((size + 1) * Math.random())];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = (int) ((value + 1) * Math.random() - (int) (value * Math.random()));
            }
            return arr;
        }
    
        /**
         * 数组的拷贝
         *
         * @param arr 需要拷贝的数组
         * @return 返回拷贝完成的数组
         */
        public static int[] copyArray(int[] arr) {
            if (arr == null) {
                return null;
            }
            int[] arrRes = new int[arr.length];
            for (int i = 0; i < arr.length; i++) {
                arrRes[i] = arr[i];
            }
            return arrRes;
        }
    
        /**
         * 正确的排序方法 来自 JDK 的方法
         *
         * @param arr 需要排序的数组
         */
        public static void rightMethod(int[] arr) {
            Arrays.sort(arr);
        }
    
        /**
         * 判断两个数组是否相等
         *
         * @param arr1 数组1
         * @param arr2 数组2
         * @return 返回是否相等
         */
        public static boolean isEquals(int[] arr1, int[] arr2) {
            if ((arr1 == null && arr2 != null) ||
                    (arr1 != null && arr2 == null)) {
                return false;
            }
            if (arr1 == arr2) {
                return true;
            }
            if (arr1.length != arr2.length) {
                return false;
            }
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i] != arr2[i]) {
                    return false;
                }
            }
            return true;
        }
    
        public static void printArray(int[] arr) {
            if (arr == null) {
                System.out.println("数组为空");
                return;
            }
            for (int i = 0; i < arr.length; i++) {
                System.out.print("arr[" + i + "] = " + arr[i] + " ");
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 每日一题 [27] 加一

          本文链接:https://www.haomeiwen.com/subject/ztjrohtx.html