滑动窗口最大值
题目链接:滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回 滑动窗口中的最大值 。
方法:单调队列
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
if (nums.size() == 0 || k == 0) return {};
deque<int> d;
vector<int> res(nums.size()-k+1);
for (int j = 0,i = 1-k; j < nums.size();i++,j++) {
if (i > 0 && d.front() == nums[i-1]) {
d.pop_front();
}
while (!d.empty() && d.back() < nums[j])
d.pop_back();
d.push_back(nums[j]);
if (i >= 0) {
res[i] = d.front();
}
}
return res;
}
};