滑动窗口经典题目,这里使用deque,双端队列中保存的是下标,保存值和下标均可以,依赖个人习惯。
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
deque<int> dq;
vector<int> ans;
for(int i = 0;i < nums.size();i++)
{
if(!dq.empty() && dq.front() == i - k)
dq.pop_front();
while(!dq.empty() && nums[dq.back()] < nums[i])
dq.pop_back();
dq.push_back(i);
if(i >= k -1)
ans.push_back(nums[dq.front()]);
}
return ans;
}
};