三个map,一个用来记录出现的次数,一个用来记录第一次出现的索引,一个用来记录最后一次出现的索引。
class Solution {
public int findShortestSubArray(int[] nums) {
HashMap<Integer,Integer> map = new HashMap<>();
HashMap<Integer,Integer> map1 = new HashMap<>();
HashMap<Integer,Integer> map2 = new HashMap<>();
int max = 0;
for(int i=0;i<nums.length;i++){
int tmp = nums[i];
map.put(tmp,map.getOrDefault(tmp,0)+1);
max = Math.max(max,map.get(tmp));
if(!map1.containsKey(tmp)){
map1.put(tmp,i);
}
map2.put(tmp,i);
}
int min = Integer.MAX_VALUE;
for(int num : map.keySet()){
if(map.get(num)==max){
min = Math.min(min,map2.get(num)-map1.get(num)+1);
}
}
return min;
}
}