zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    Appium Desktop使用
    mumu模拟器使用
    adb
    测试准出
    缺陷管理
    测试准入检查
    测试工作流程
    需求测试分析
    异常字符测试
    今日总结
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10522064.html
Copyright © 2011-2022 走看看