| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构 - 单调队列 -> 正文阅读 |
|
[数据结构与算法]数据结构 - 单调队列 |
概念 一种具有单调性的队列,分为单调递增队列和单调递减队列。 适合场景 维护区间最值,即,适合解决RMQ(rang maximum/minimum query)问题,也称之为滑动窗口区间最值问题。 若维护区间最小值,则需要维护一个单调递增的序列;若维护区间最大值,则需要维护一个单调递减的序列。 维护单调队列性值的操作 入队操作:队尾入队,会把之前破坏单调性的元素都从队尾移出(维护单调性)。 出队操作:如果队首元素超出区间范围,就将元素从队首出队。 1.1 习题1) 239. 滑动窗口最大值一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 [1 3 -1] -3 5 3 6 7 3
2) 剑指 Offer 59 - II. 队列的最大值请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 1: 输入:
3) 862. 和至少为 K 的最短子数组返回 如果没有和至少为 示例 :
分析:前缀和数组 + 单调递增队列 子数组和 => 前缀和数组, 前缀和数组两元素差值的最小值为k,即,若固定前缀和数组末尾后,该固定末尾的子数组两元素差值需要尽可能大,即直接用当前前缀和数组固定末尾元素减去前缀和数组的最小值,得到的就是那个最大的差值,若这个差值>=k,则,为了找到长度更短的子数组,可以继续向后找到前缀和数组的次小值,看是否满足差值>=k;直到差值不满足>=k。最后一个满足条件的就是固定末尾的最短子数组。==》 由此分析,可得,除了需要一个前缀和数组外,还需要维护这个前缀和数组的最小值的单调递增队列; 对该前缀和数组从前后扫描,以前缀和数组的下一个元素为固定末尾,寻找满足题意的子数组,因为需要找比之前的子数组还短的数组,所以之前从单调队列队首弹出的元素都不满足条件,可以基于此单调队列从前至后继续寻找。
4) 1438. 绝对差不超过限制的最长连续子数组给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组,则返回 0 。 示例 1: 输入:nums = [8,2,4,7], limit = 4 L为最长的子数组,若最大值 - 最小值 <= limit,则该子数组内任意两个元素之间的绝对值差一定<=limit;故,一定存在满足条件的小于L的子数组;一定不存在满足条件的大于L的子数组; 由此,此求最长子数组长度可转化为二分查找的01模型中的找最后一个0的问题。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:42:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |