标签:map maxNum nums minLen int 08 05 vec 2021
//维护一个哈希表,其中存储了每个数字出现的次数、其第一次出现的位置以及最后一次出现的位置
//最短连续子数组必然包含出现频次最高的数字的所有个体,minLen = vec[2] - vec[1] + 1
class Solution {
public:
int findShortestSubArray(vector<int>& nums) {
unordered_map<int,vector<int>> map;
int n = nums.size();
for(int i= 0;i<n;i++)
{
if(map.count(nums[i]))
{
map[nums[i]][0]++;
map[nums[i]][2] = i;
}else{
map[nums[i]] = {1,i,i};
}
}
int maxNum = 0;
int minLen = 0;
for(auto [_,vec] : map)
{
if(maxNum < vec[0])
{
maxNum = vec[0];
minLen = vec[2] - vec[1] + 1;
}else if(maxNum == vec[0])
{
if(minLen > vec[2] - vec[1] + 1 )
{
minLen = vec[2] - vec[1] + 1;
}
}
}
return minLen;
}
};
标签:map,maxNum,nums,minLen,int,08,05,vec,2021 来源: https://blog.csdn.net/weixin_45792025/article/details/119426950
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。