class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
vector<int> ans;
deque<int> q;
for(int i = 0; i < nums.size(); ++ i){
//左侧下标小,且值小的出队列
while(q.size() && q.back() < nums[i]){
q.pop_back();
}
q.push_back(nums[i]);
//当队列元素达到k 个时,最大值出队列
if(i - k >= 0 && nums[i - k] == q.front()){
q.pop_front();
}
//队列左侧是最大值
if(i >= k - 1) ans.push_back(q.front());
}
return ans;
}
};