| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 单调队列讲解 + AcWing 154. 滑动窗口 -> 正文阅读 |
|
[数据结构与算法]单调队列讲解 + AcWing 154. 滑动窗口 |
单调队列典型运用:求滑动窗口中的 最大值 or 最小值 举个例子: 给定输入序列: 则有: 首先对于窗口我们用队列来维护,先从队列为空开始维护, 开始枚举每个元素,元素从队尾插入,此后队列中时刻都是维护的当前窗口中所有元素(
每一次求取极值的时候,暴力做法就是遍历队列中所有元素 对于这种暴力做法的时间复杂度为 优化思路: 方式和单调栈类似,分析队列中是不是有些元素是“没用”的,把这些“没用”的元素删掉,观察是否会得到单调性,我们将目光锁定在一个窗口中: 注意,现在我们在模拟求一个窗口内的 首先,当 换句通俗点的话说:只要“ 上述可以断定,第一个元素 总结一下,只要队列中存在这样的情况(前面的元素比后面的元素大): 因此,只要有上述这样“逆序对”的情况发生的话,我们就可以将较大的元素删掉,当将所有这样的逆序对删掉的话,整个队列就会成为一个严格单调上升的了。 我们的目标是求这个严格单调上升队列中的 求窗口内的 细节: 怎么知道队首元素何时弹出呢? 对本题而言, 时间复杂度: O ( n ) O(n) O(n) 求
求
手写双端队列写法
STL双端队列deque写法
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 13:38:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |