class Solution {
public int findShortestSubArray(int[] nums) {
// 非空 非负整数
Map<Integer,int[]> map = new HashMap<Integer,int[]>();
for(int i = 0; i < nums.length; i++){
if(map.containsKey(nums[i])){
map.get(nums[i])[0]++; // 存放出现次数
map.get(nums[i])[2] = i; // 存放结束位置
}else{
//没出现过
map.put(nums[i],new int[]{1,i,i}); // 存放起始位置
}
}
int maxCount = 0;
int minLen = 0;
for(Map.Entry<Integer,int[]> entry : map.entrySet()){
int[] dataArr = entry.getValue();
if(dataArr[0] > maxCount){
maxCount = dataArr[0];
minLen = dataArr[2] - dataArr[1] + 1;
}else if(dataArr[0] == maxCount){
// 度相同
// 判断最小长度
if(minLen > dataArr[2] - dataArr[1] + 1){
minLen = dataArr[2] - dataArr[1] + 1;
}
}
}
return minLen;
}
}
代码来自leetcode官方,这里仅作记录用