首页 > 其他分享 >LeetCode 239. 滑动窗口最大值(滑动窗口)

LeetCode 239. 滑动窗口最大值(滑动窗口)

时间:2024-09-09 12:51:41浏览次数:9  
标签:窗口 nums de back front 滑动 LeetCode

题目:239. 滑动窗口最大值

在这里插入图片描述
在这里插入图片描述
思路:用一个双端队列来保存滑动窗口内的值按大到小排序,时间复杂度0(n)。细节看注释

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
    	//元素值是nums的下标,满足nums值按大到小排序
        deque<int> de;
        vector<int> v;
        for(int i=0;i<nums.size();i++){
        	//保存递减的顺序
            while(de.size()&&nums[de.back()]<=nums[i]){
                de.pop_back();
            }
            de.push_back(i);
            //遍历过的元素>=k个
            if(i>=k-1){
            	//这里的while改成if也可以,因为每次最多只有一个超过滑动窗口的范围
                while(de.size()&&i-de.front()>k-1){
                    de.pop_front();
                }
                v.push_back(nums[de.front()]);
            }
        }
        return v;
    }
};

标签:窗口,nums,de,back,front,滑动,LeetCode
From: https://blog.csdn.net/weixin_46028214/article/details/142055992

相关文章

  • [LeetCode] 2181. Merge Nodes in Between Zeros
    Youaregiventheheadofalinkedlist,whichcontainsaseriesofintegersseparatedby0's.ThebeginningandendofthelinkedlistwillhaveNode.val==0.Foreverytwoconsecutive0's,mergeallthenodeslyinginbetweenthemintoasing......
  • LeetCode 刷题—集合
    一:集合1、特点:元素没有顺序;不重复2、集合可以用来检擦某个元素是否存在;或者检查是否从在重复的元素3、常见的操作:#创建集合my_set={1,2,3,4,5}#添加元素my_set.add(6)#访问元素(集合是无序的;不能通过下标索引访问元素;只能通过遍历访问元素)foriinmy_set:print(i)#......
  • 0906, 0909 shell编程与基础算法(leetCode )
    0906哈希表的基本知识:哈希表(HashTable)又称散列表,是除顺序存储结构、链式存储结构和索引表存储结构之外的又一种存储结构。哈希碰撞:解决办法开放定址法:是一类以发生冲突的哈希地址为自变量,通过某种哈希冲突函数得到一个新的空闲的哈希地址的方法。(1)线性探测法从发生......
  • LeetCode刷题笔记9.2-9.9
    leetCode刷题笔记(9.2-9.9)48.旋转图像(9.3)1)图像即二维数组,图像的旋转本质上是二维数组的旋转变换2)二维数组从外层来看,是若干个子数组的集合,子数组内部维护各自的元素,即若干个row里是row.length个column3)由此可理解下面几个关于二维数组的函数:创建二维数组并初始化int[][]......
  • 算法题笔记-滑动窗口
    referdocleetcode对应题目:3.无重复字符的最长子串438.找到字符串中所有字母异位词解题模板://外层循环扩展右边界,内层循环扩展左边界for(intl=0,r=0;r<n;r++){ //当前考虑的元素 while(l<=r&&check()){//扩展左边界 //触发条件,改变滑动......
  • 代码随想录算法训练营,9月7日 | 150. 逆波兰表达式求值,239. 滑动窗口最大值,347.前 K 个
    150.逆波兰表达式求值题目链接:150.逆波兰表达式求值文档讲解︰代码随想录(programmercarl.com)视频讲解︰逆波兰表达式求值日期:2024-09-07想法:用栈解决,遇到运算符取前两个数字计算(表达式总是成立的,不用做额外的判定)Java代码如下:classSolution{publicintevalRPN(Stri......
  • 【JavaScript】LeetCode:16-20
    文章目录16无重复字符的最长字串17找到字符串中所有字母异位词18和为K的子数组19滑动窗口最大值20最小覆盖字串16无重复字符的最长字串滑动窗口+哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新......
  • 【Qt】窗口移动和大小改变事件
     窗口移动和大小改变事件moveEvent窗口移动时触发的事件resizeEvent窗口大小改变时触发的事件例子:测试移动窗口和改变窗口事件 代码展示#include"widget.h"#include"ui_widget.h"#include<QDebug>#include<QMoveEvent>#include<QResizeEvent>Widget::Wi......
  • Day07 字符串part01| LeetCode 344. 反转字符串,541. 反转字符串II,卡码网:54.替换数字
    反转字符串344.反转字符串classSolution{publicvoidreverseString(char[]s){intlens=s.length;intright,left;if(lens%2!=0)//奇数个{right=lens/2+1;left=lens/2-1......
  • Day03 链表part01| LeetCode 203. 移除链表元素,707. 设计链表,206. 反转链表
    链表理论基础链表一种通过指针串联在一起的线性结构数据域指针域(存放指向下一个节点的指针,最后一个节点的指针域指向NULL)入口节点——head头节点链表类型单链表双链表两个指针域一个指向下一个节点一个指向上一个节点循环链表首尾相连约瑟夫环问题......