leetcode-滑动窗口的最大值-95

题目要求
在这里插入图片描述
思路
1.这个题是可以暴力求解的,但是时间复杂度比较高,因此,这里说一个时间复杂度为O(n)的方法
2.因为这个代码是优化后的结果,第一次写如果直接写成这样着实不容易,因此,我直接讲每一行的含义。
3.创建一个数组ans,这个用来存储最终返回的最大值的结果
4.创建一个双端队列dq,这个里面存储是num中元素的下标
5.首先如果dq为空,那么我们先插入一个第一个元素的下标
6.第二个while循环,如果新来的这个元素的值大于之前元素的值,那么新来的这个值只要没出去,前面的比他小的值都需要被覆盖,目的就是让num[dq[i]]的值是单调递减的
6.第一个while循环,用于模拟滑动窗口的左端,如果该元素从左边已经滑出,那么需要更新双端队列的队头
7.将满足滑动窗口中最大的值,也就是存储在dq中的front的下标的值,保存到ans中,最后返回ans。
总结:这个题代码行数虽然不多,但是着实不好一次写对,算是一个比较重要的题,值得深思。

代码实现

class Solution {
public:
    vector<int> maxInWindows(vector<int>& num, int size) {
        vector<int> ans;
        deque<int> dq; //用于存储下标
        for(int i = 0; i < num.size(); i++)
        {
            while( !dq.empty() && i - dq.front() + 1 > size)
                dq.pop_front();
            while(!dq.empty() && num[dq.back()] <= num[i])
                dq.pop_back();
            dq.push_back(i);
            if(size && i >= size - 1)
                ans.push_back(num[dq.front()]);
        }
        return ans;
    }
};

相关推荐

  1. Leetcode】239. 滑动窗口

    2024-05-05 00:34:03       63 阅读
  2. LeetCode】239. 滑动窗口

    2024-05-05 00:34:03       55 阅读
  3. Leetcode 239 滑动窗口

    2024-05-05 00:34:03       55 阅读
  4. LeetCode 239. 滑动窗口

    2024-05-05 00:34:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-05 00:34:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-05 00:34:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-05 00:34:03       82 阅读
  4. Python语言-面向对象

    2024-05-05 00:34:03       91 阅读

热门阅读

  1. Jar Summery 2 Linux Service Configure Example

    2024-05-05 00:34:03       32 阅读
  2. VBA 拆分Excel中的各sheet为文件

    2024-05-05 00:34:03       35 阅读
  3. 【代码随想录】day48

    2024-05-05 00:34:03       36 阅读
  4. 代码随想录leetcode200题之数组

    2024-05-05 00:34:03       35 阅读
  5. 品味酱香酒与浓香酒,选择最适合您的白酒

    2024-05-05 00:34:03       29 阅读
  6. 每日一练算法

    2024-05-05 00:34:03       31 阅读
  7. 绕过Windows 11的安装门槛

    2024-05-05 00:34:03       35 阅读
  8. Ubuntu22安装docker

    2024-05-05 00:34:03       33 阅读
  9. Json高效处理方法

    2024-05-05 00:34:03       36 阅读
  10. Visual Studio 2022 工具 选项 没有网络设置问题解决

    2024-05-05 00:34:03       37 阅读
  11. Docker

    Docker

    2024-05-05 00:34:03      27 阅读