• leetcode 239. Sliding Window Maximum


    https://www.cnblogs.com/grandyang/p/4656517.html

    使用双端队列维护一个单调递减的队列。使用双端队列的原因是,当顶部元素不在这个窗口的时候,就需要弹出,并且是从前面弹出,保证插入的元素的顺序不变。

    单调递减是因为让双端队列的头部一直是当前窗口的最大值,只要这个最大值在窗口内,无论怎么滑都是最大值

    递减是为了保证 后面的窗口可能出现的最大值

    class Solution {
    public:
        vector<int> maxSlidingWindow(vector<int>& nums, int k) {
            vector<int> result;
            deque<int> d;
            for(int i = 0;i < nums.size();i++){
                if(!d.empty() && d.front() == i - k)
                    d.pop_front();
                while(!d.empty() && nums[d.back()] < nums[i])
                    d.pop_back();
                d.push_back(i);
                if(i - k >= -1)
                    result.push_back(nums[d.front()]);
            }
            return result;
        }
    };
  • 相关阅读:
    爬虫心得
    WSL windows子系统ubuntu18.04建设自己的乌云
    WSL windwos 子系统 ubuntu18.04安装mysql
    python 163 email 554
    Centos 安装Oracle
    JS带进度 文件 重复 自动 异步上传
    xadmin 小组件默认折叠
    grep
    sed
    awk
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10522064.html
Copyright © 2020-2023  润新知