题解 | #滑动窗口最小值#
滑动窗口最小值
https://www.nowcoder.com/practice/f461dfe66f804263bac32e13c05178fa
#include <vector>
#include <deque>
using namespace std;
class Solution {
public:
vector<int> minSlidingWindow(vector<int>& nums, int k) {
vector<int> result;
deque<int> q; // 存储索引的双端队列
for (int i = 0; i < nums.size(); ++i) {
// 移除窗口外的元素索引
if (!q.empty() && q.front() < i - k + 1) {
q.pop_front();
}
// 保持队列单调递减
while (!q.empty() && nums[q.back()] > nums[i]) {
q.pop_back();
}
// 将当前元素索引加入队列
q.push_back(i);
// 如果窗口已经形成,则将结果加入结果数组
if (i >= k - 1) {
result.push_back(nums[q.front()]);
}
}
return result;
}
};
查看2道真题和解析
正浩创新EcoFlow公司福利 646人发布
