697.数组的度
class Solution {
public int findShortestSubArray(int[] nums) {
int len = nums.length, maxCount = 0, minWindow = 0;
//定义输入数组长度len、数组元素出现最大次数maxCount、最短连续子数组minWindow
Map<Integer, int[]> map = new HashMap<>();
//定义MAP<nums数组元素,pair子数组[0]记录数组元素[1]记录出现次数>
for (int i = 0; i < len; i++) {
//循环遍历数组
int[] pair = map.get(nums[i]);
//存储nums元素出现次数
if (pair == null) {
//未出现过则创建这个数组,扔进hashmap
pair = new int[]{i, 1};
map.put(nums[i], pair);
} else {
pair[1]++;
//存在则增加出现次数
}
if (pair[1] > maxCount) {
//如果出现次数超过maxCount就覆盖它
maxCount = pair[1];
minWindow = i - pair[0] + 1;
//这句话看了好久,应该是记录拥有相同大小的度的最短连续子数组的长度
} else if (pair[1] == maxCount) {
//如果二者相等则返回最小值
minWindow = Math.min(minWindow, i - pair[0] + 1);
}
}
return minWindow;
}
}