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数组的度和一比特二比特的主要内容,如果未能解决你的问题,请参考以下文章