LeetCode210508数组的度和一比特二比特

Posted 程序彤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode210508数组的度和一比特二比特相关的知识,希望对你有一定的参考价值。

数组的度

	public static int findShortestSubArray(int[] nums) {
        HashMap<Integer, int[]> map = new HashMap<>();
        int n = nums.length;
        for (int i = 0; i < n; i++) {
            if (map.containsKey(nums[i])) {
                map.get(nums[i])[0]++; // 出现的次数+1
                map.get(nums[i])[2] = i; // 最后一次出现的位置
            } else {
                map.put(nums[i], new int[]{1, i, i}); // 最中间的数即固定为第一次出现的位置。
            }
        }
        int maxCount = 0, minLen = 0;
        for (Map.Entry<Integer, int[]> entry : map.entrySet()) {
            int[] arr = entry.getValue(); 
            if (maxCount < arr[0]) { // 如果当前数组中保存的该数的最大出现次数 大于擂台上最大出现次数
                maxCount = arr[0]; // 打擂台,将当前变为最大出现次数
                minLen = arr[2] - arr[1] + 1; // 最小长度为最后一次出现的位置减去第一次出现的位置
            } else if (maxCount == arr[0]) { // 如果我和擂台上最大出现次数相同
                if (minLen>arr[2]-arr[1]+1){ // 则去判断如果我的最小长度比擂台上的小,则是我想要的
                    minLen = arr[2]-arr[1]+1; // 将擂台上最小长度变为我这个更小的。
                }
            }
        }
        return minLen;
    }

一比特二比特

	public static boolean method(int[] arr){
        int i = 0;
        while (i < arr.length - 1) {
            i+=arr[i]+1; // 如果当前位置是1,则跳两步,如果当前位置是0,则跳一步,
        }
        return i == arr.length-1;  // 不管你怎么跳,最后我只判断跳到的位置是不是数组的最后一个位置。
    }

以上是关于LeetCode210508数组的度和一比特二比特的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:79.数组的度

LeetCode 697. 数组的度

LeetCode 697. 数组的度

[LeetCode] Degree of an Array 数组的度

LeetCode_697_数组_数组的度

LeetCode_697_数组_数组的度