【LeetCode】239. 滑动窗口最大值

news/2024/11/29 4:37:10/

239. 滑动窗口最大值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路

  • 当我们遍历数组时,我们需要维护一个双端队列,用于存储滑动窗口中的元素的索引。 队列中的元素按照降序排列,即「队头元素是当前滑动窗口中的最大值」。

  • 具体的步骤如下:

    1. 创建一个双端队列 window,用于存储滑动窗口中的元素的索引
    2. 遍历整个数组,对于每个元素 nums[i]:
      • 如果「队列不为空」且「队头元素不在当前滑动窗口的范围内」,将队头元素从队列中删除,因为它已经不在滑动窗口中了。
      • 如果「队列不为空」且「当前元素 nums[i] 大于等于队尾元素所对应的数组元素 nums[window.back()] 」,将队尾元素从队列中删除,因为它不可能是滑动窗口中的最大值了。
      • 将当前元素的索引 i 加入队列的队尾
      • 如果当前遍历的索引 i 大于等于滑动窗口的大小 k-1,说明当前滑动窗口已经形成,将队头元素所对应的数组元素 nums[window.front()] 加入结果数组 ans中。
        返回结果数组 ans。
  • 通过以上的步骤,我们可以得到滑动窗口中的最大值。 这是因为队列中的元素按照降序排列,所以队列的队头元素即为当前滑动窗口中的最大值。

代码

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> ans;int n = nums.size();deque<int> windows;for(int i=0; i<n; ++i){// 如果队列不为空且队头元素不在当前滑动窗口的范围内// 将队头元素从队列中删除if(!windows.empty() && windows.front() <= i-k){windows.pop_front();}// 如果队列不为空且当前元素大于队尾元素,删除队尾元素while(!windows.empty() && nums[windows.back()] <= nums[i]){windows.pop_back();}// 当前元素入队windows.push_back(i);// 如果当前遍历的索引大于等于滑动窗口的大小// 将队头元素所对应的数组元素加入结果数组中if(i >= k-1){ans.push_back(nums[windows.front()]);}}return ans;}
};

参考资料

  1. 【动画模拟】一下就能搞懂的题解(单调双端队列)

http://www.ppmy.cn/news/665788.html

相关文章

电脑连上手机热点后上不了网

问题&#xff1a;电脑连上手机热点后&#xff0c;网络连接显示正常&#xff0c;但是却不能上网 解决办法&#xff1a; 首先&#xff0c;我们打开网络与共享中心&#xff0c;更改网络适配器 将适配器先禁用&#xff0c;后启动 将ip和DNS设置为自动获得 设置完成之后&#xff0…

计算机重启后无法连接网络,路由器重启后电脑无法联网怎么办?有什么解决方法...

在学校或某些使用交换机路由器组成局域网的场合&#xff0c;如果设备出现停电&#xff0c;往往会有些电脑无法联网。那该如何解决呢&#xff1f;本文将为大家介绍一个解决方法&#xff0c;希望对大家有所帮助 路由器重启后电脑无法联网的解决方法&#xff1a; 1、此类故障的停网…

小米手机连上无线网却无法上网络连接服务器,连接水星路由器wifi成功但上不了网怎么办?...

路由器的无线wifi信号满格,手机也可以成功连接到wifi信号,但是连接后却上不了网。 不少人在使用水星路由器的时候,可能都遇到过这样的问题。 根据鸿哥和广大网友一对一的沟通后,我发现出现这个问题的原因有3个方面: 1、路由器联网失败 2、路由器中限制问题 3、无线连接数量…

mw325r已断开服务器无响应,水星mw325r路由器恢复出厂设置之后上不了网怎么办?...

“我把水星mw325r路由器恢复出厂设置之后有点问题了&#xff0c;可以教教我怎么解决吗&#xff1f;”这是一个典型的重置路由器没有正确设置的案例。路由器恢复出厂的意思就是跟刚买来的时候一样&#xff0c;没有任何用户自己的配置&#xff0c;所以&#xff0c;正确配置路由器…

手机水星路由器服务器无响应,水星路由器无线wifi连接成功但上不了网的解决方法...

路由器的无线wifi信号满格,手机也可以成功连接到wifi信号,但是连接后却上不了网。不少人在使用水星路由器的时候,可能都遇到过这样的问题。根据悟途网小编和广大网友一对一的沟通后,我发现出现这个问题的原因有3个方面: 1、路由器联网失败 2、路由器中限制问题 3、无线连接…

Ubuntu重启电脑后上不了网的一些解决办法

Ubuntu电脑重启后经常性会遇到上不了网的情况&#xff0c;每次都是去百度&#xff0c;想了一下还是总结一下方法&#xff0c;方便以后查询。 之前上网没问题&#xff0c;重启电脑后不行优先使用 sudo service network-manager restart 如果还不能解决&#xff0c;试一下下面…

计算机网络上不去的原因是什么,路由器有信号却上不了网是什么原因?

路由器(Router)&#xff0c;是连接因特网中各局域网、广域网的设备&#xff0c;它会根据信道的情况自动选择和设定路由&#xff0c;以最佳路径&#xff0c;按前后顺序发送信号。那么路由器有信号却上不了网是什么原因? 为什么路由器有信号却上不了网? 路由器有wifi信号&#…

笔记本无线网络图标消失上不了网笔记本网络重置以后上不了网问题处理

情况&#xff1a; 1、笔记本、win10系统 2、原本上网功能好好的&#xff0c;突然就”找不到网页“了&#xff0c;此时网络图标还在 3、于是尝试网络重置 4、网络图标就此消失&#xff0c;并上不了网 5、驱动精灵、电脑管家网络修复都没有效果 6、手动添加无线网络是可行的&…