滑动窗口最大值 发表于 2022-05-01 | 分类于 算法 , 优先队列 , 滑动窗口最大值 | 滑动窗口最大值 239.滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 12345678910111213141516171819202122232425class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { int n=nums.size(); //优先队列中存储二元组(nums[i], i); priority_queue<pair<int,int>> pq; //初始将前k个元素放入到优先队列中 for(int i=0;i<k;i++){ pq.emplace(nums[i], i); } //存放最终结果 vector<int> res={pq.top().first}; //开始移动窗口 for(int i=k;i<n;i++){ //将下一个元素加入 pq.emplace(nums[i], i); //当堆顶元素为滑动窗口最左侧的值,移出堆顶元素 while(pq.top().second <= i-k){ pq.pop(); } res.push_back(pq.top().first); } return res; }}; -------------本文结束 感谢阅读------------- 本文作者: HReina 本文链接: http://hreina.com/2022/05/01/%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!