滑动窗口最大值
直接暴力显然不行,所以我们运用堆的想法,一直维护堆顶的元素,确保堆顶的元素的下标大于滑动窗口的左边界。
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
priority_queue<pair<int,int> >p;
for(int i=0;i<k;i++) p.emplace(nums[i],i);
vector<int >ans;
ans.push_back(p.top().first);
for(int i=k;i<nums.size();i++){
p.emplace(nums[i],i);
while(p.top().second<=i-k){
p.pop();
}
ans.push_back(p.top().first);
}
return ans;
}
};