class Solution {
public:
int findShortestSubArray(vector<int>& nums) {
map<int,pair<int,int>> mp;
int mx = 0;
int ans = 0;
for(int i=0;i<nums.size();i++){
if(mp[nums[i]].first == 0) mp[nums[i]].second = i;
int F = ++mp[nums[i]].first;
int S = mp[nums[i]].second;
if(F > mx){
mx = F;
ans = i - S + 1;
}else if(F == mx){
ans = min(ans,i-S+1);
}
}
return ans;
}
};