题解 | #滑动窗口最小值#

滑动窗口最小值

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;
    }
};

全部评论

相关推荐

迷茫的大四🐶:干脆大厂搞个收费培训得了,这样就人均大厂了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务