首页 > 其他分享 >滑动窗口最大值

滑动窗口最大值

时间:2024-12-18 16:42:06浏览次数:5  
标签:窗口 nums 最大值 vector 数组 滑动

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值 

 

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       3
 1 [3  -1  -3] 5  3  6  7       3
 1  3 [-1  -3  5] 3  6  7       5
 1  3  -1 [-3  5  3] 6  7       5
 1  3  -1  -3 [5  3  6] 7       6
 1  3  -1  -3  5 [3  6  7]      7

示例 2:

输入:nums = [1], k = 1
输出:[1]

思路:优先队列,因为它是默认降序排序的

 

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        set<int> st;
        vector<int> res;
        priority_queue<pair<int,int>> q;//默认降序
        //初始化滑动窗口
        for(int i=0;i<k;i++){
            q.push({nums[i],i});
        }
        res.emplace_back(q.top().first);
        //移动滑动窗口
        for(int i=k;i<nums.size();i++){
            q.push({nums[i],i});
            while(q.top().second<=i-k){//最大值在窗口之外才移除,避免频繁的push\pop操作,节省时间
                q.pop();
            }
            res.emplace_back(q.top().first);
        }
        return res;
    }
};

 

标签:窗口,nums,最大值,vector,数组,滑动
From: https://www.cnblogs.com/yueshengd/p/18615300

相关文章

  • 【239. 滑动窗口最大值 困难】
    题目:给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例1:输入:nums=[1,3,-1,-3,5,3,6,7],k=3输出:[3,3,5,5,6,7]解释:滑动窗......
  • 滑动变阻器的主要特性和参数有哪些?
    滑动变阻器是一种常见的电阻调节装置,其主要特性和参数如下:电阻值范围:滑动变阻器的电阻值范围是指其最小电阻值到最大电阻值之间的范围。这个范围通常由滑动变阻器的设计决定,一般在几欧姆到几千欧姆之间。额定功率:滑动变阻器的额定功率是指其能够承受的最大电功率。如果超过这个......
  • 代码随想录:滑动窗口最大值
    代码随想录:滑动窗口最大值用双端队列写一个单调队列classSolution{public:classbiggerqueue{public:deque<int>target;//intwindows_size;//biggerqueue(intsize){windows_size=size;}//全错了,不能用size来pop掉......
  • 20种炫酷打开模态窗口动画特效插件xdialog
    xdialog是一款炫酷打开模态窗口动画特效插件。该插件提供20种打开模态窗口的动画特效,并提供丰富的配置参数和api来控制模态窗口,非常实用。 在线演示下载  使用方法在页面中引入xdialog.css和xdialog.js文件。<linkrel="stylesheet"href="xdialog/xdialog.css"......
  • 高级语句-窗口函数
     窗口函数  注意:一般使用窗口函数气候都要紧跟as名称,因为窗口函数会多产生一个列使用开窗函数应避免使用rank作为排序字段名称。容易报错来自2.查找入职员工时间排名倒数第三的员工所有信息_牛客博客也可以直接用over计算累计总和等,e.g.sum/count()over() ......
  • MySQL 中 AUTO_INCREMENT 列达到最大值时会发生什么?
    在MySQL中,AUTO_INCREMENT列用于自动生成唯一的数字值,通常用于主键。当AUTO_INCREMENT列达到最大值时,会发生以下几种情况,具体取决于列的数据类型以及MySQL的配置。对于TINYINT类型:最大值:TINYINT的最大值为127(有符号)或255(无符号)。当AUTO_INCREMENT列达到最大值时,如果尝......
  • jquery半透明拖拽窗口插件
    这是一款jquery半透明拖拽窗口插件。该插件可以在页面生成可以拖拽、最大化、最小化的浮动窗口。在线演示下载  使用方法在页面中引入style.css、jquery和jquery-translucent.js文件。<linkrel="stylesheet"type="text/css"href="style.css"/><scriptsrc="a......
  • 多显示器 Win + D 只隐藏当前桌面窗口 – ShowDesktop Per Monitor
    现在的电脑都可以同时连接多个不同的显示器,这样在一台电脑进行操作的时候,其他显示器也会显示出同样的内容,比如按下快捷键“Win+D”就可以对当前桌面的所有窗口进行隐藏,再按一次可恢复。这个快捷键非常好用,平时工作当中可能是我用得最频繁的一个快捷组合键了。但是最近遇到一......
  • js带模糊效果的隐藏滑动侧边栏插件
    pushbar.js是一款带模糊效果的js隐藏滑动侧边栏插件。pushbar.js能制作上下左右四个方向的滑动侧边栏效果,并且在侧边栏菜单显示的时候,主页面会带有炫酷的模糊特效。 在线演示 下载 使用方法在页面中引入pushbar.js和pushbar.css文件。<linkhref="dist/css/pushbar.cs......
  • 显示浮动式窗口的方法
    文章目录1概念介绍2使用方法3示例代码我们在上一章回中介绍了AlertDialogWidget相关的内容,本章回中将介绍BottomSheetWidget.闲话休提,让我们一起TalkFlutter吧。1概念介绍我们在这里说的BottomSheet是一种弹出式窗口,和上一章回中介绍的AlertDialog类......