class Solution {
public:
int findShortestSubArray(vector<int>& nums) {
set<int>s;
map<int,int>mp;
vector<int>ans;
int max = 1;
int num = nums[0];
for(int i = 0;i<nums.size();i++)
{
if(!s.count(nums[i]))
{
s.insert(nums[i]);
mp[nums[i]] = 1;
}
else
{
mp[nums[i]]++;
if(max<mp[nums[i]])
{
max = mp[nums[i]];
num = nums[i];
}
}
}
for(int i = 0;i<nums.size();i++)
{
if(mp[nums[i]] == max) ans.push_back(nums[i]);
}
int re = nums.size();
for(int k = 0;k<ans.size();k++)
{
int a = 0,b = 0;
num = ans[k];
for(int i = 0;i<nums.size();i++)
{
if(nums[i] == num)
{
a = i;
break;
}
}
for(int j = nums.size()-1;j>=0;j--)
{
if(nums[j] == num)
{
b = j;
break;
}
}
re = min(re,b-a);
}
return re+1;
}
};