1、题目
2、分析
使用deque构造一个队列,只保留最大的几个数字。
3、代码分析
class Solution { public: class myQueue{ public: deque<int> max_queue; void pop(int value){ if(!max_queue.empty() && value==max_queue.front()){ max_queue.pop_front(); } } void push(int value){ while(!max_queue.empty() && value>max_queue.back()){ max_queue.pop_back(); } max_queue.push_back(value); } int head(){ return max_queue.front(); } }; vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int> result; myQueue per_queue; for(int i=0; i<k; i++){ per_queue.push(nums[i]); } result.push_back(per_queue.head()); for(int i=k; i<nums.size(); i++) { per_queue.pop(nums[i-k]); per_queue.push(nums[i]); result.push_back(per_queue.head()); } return result; } };