class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
int size = nums.size();
vector<int> maxs;
int i = 0;
int j = i + k - 1;
while(j < size){
int maxValue = 0;
for(int l = i;l<=j;l++){
if(nums[l]>maxValue){
maxValue = nums[l];
}
}
maxs.push_back(maxValue);
i++;
j++;
}
return maxs;
}
};
暴力解法,部分用例下会超时;
优先级队列,有点难想;
大体思路就是先使用unordered_map对出现的频次进行统计,key代表数字value代表出现的频次;然后对出现的频次进行排序,找出前k个频次进行输出,这里采用优先级队列存储map结构,小顶堆,每次弹出出现频次最小的map;最后剩下的就是前k个高频次;按出现频次进行排序,最后输出的是k;