优先队列/单调队列 - 滑动窗口最大值
题目链接
优先队列
class Solution {public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {int n = nums.size();priority_queue<pair<int,int>> q;for (int i = 0; i < k; ++i) {q.emplace(nums[i], i);}vector<int> ret = {q.top().first};for (int i = k; i < n; ++i) {q.emplace(nums[i], i);while (q.top().second <= i - k) {q.pop();}ret.push_back(q.top().first);}return ret;}
};
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:n = len(nums)# Python 默认的优先队列是小根堆q = [(-nums[i], i) for i in range(k)]heapq.heapify(q)ans = [-q[0][0]]for i in range(k, n):heapq.heappush(q, (-nums[i], i))while (q[0][1] <= i - k):heapq.heappop(q)ans.append(-q[0][0])return ans
双向列表
class Solution {public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {deque<int> q;vector<int> ret;int n = nums.size();for (int i = 0; i < n; ++i) {while (!q.empty() && nums[q.back()] <= nums[i]) {q.pop_back();}q.push_back(i);if (q.front() <= i - k) {q.pop_front();}if (i >= k - 1) {ret.push_back(nums[q.front()]);}}return ret;}
};
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:n = len(nums)q = collections.deque()for i in range(k):while q and nums[i] >= nums[q[-1]]:q.pop()q.append(i)ans = [nums[q[0]]]for i in range(k, n):while q and nums[i] >= nums[q[-1]]:q.pop()q.append(i)while q[0] <= i - k:q.popleft()ans.append(nums[q[0]])return ans
优先队列/单调队列 - 滑动窗口最大值相关推荐
- 【CF 1195】Basketball Exercise/Submarine in the Rybinsk Sea (hard edition)/OpenStreetMap+二维单调队列滑动窗口模板
寡人认为C,E都是比较板的题 butD2也太ex了,大大是被那个mod精给弄疯了,我mod了那么多次还是炸了longlong orz 文章目录 二维单调队列模板 C:Basketball Exerci ...
- (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)
目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...
- 单调区间之239.滑动窗口最大值
单调区间 239. 滑动窗口最大值 这个题如果用普通的优先队列是有问题的,因为每次弹出去的不知道是上一个窗口的左边界还是这个窗口里的元素.我们要的是每次只弹出上一个窗口的左边界并且还能弹出最值,所以这 ...
- Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素
day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...
- 栈和队列6:滑动窗口最大值
问题描述: 题目链接: 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. ...
- 力扣239. 滑动窗口最大值(自定义排序队列)
239. 滑动窗口最大值 //实现功能:peek()取得队列的最大值,比最大值先添加进来的删除,后添加进来的保留 class Mydeque{Deque<Integer> deque;pu ...
- 【LeetCode】【HOT】239. 滑动窗口最大值(双向队列)
[LeetCode][HOT]239. 滑动窗口最大值 文章目录 [LeetCode][HOT]239. 滑动窗口最大值 package hot;import java.util.Arrays; im ...
- 嗯,查询滑动窗口最大值的这4种方法不错....
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 本文已收录至 Github<小白学算法>系列:https://gith ...
- 你还在为查询滑动窗口最大值发愁吗?点开看最高效率解法!
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 头图 | CSDN 下载自东方IC 本文已收录至 Github<小白学算法>系列:https://github.c ...
最新文章
- 二逼平衡树——树套树(线段树套Splay平衡树)
- 【Android 异步操作】手写 Handler ( Handler 发送与处理消息 | Handler 初始化 | 完整 Handler 代码 )
- 浪潮云发布全新“1231”业务战略,打造“一朵分布式云”
- 解决IE8上传文件时javascript取文件的本地路径的问题C:\fakepath\..
- JSONOBject的fluentPut(key,value)方法:可链式设置元素
- java 格式化输出
- python数据结构剑指offer-重建二叉树
- 【相机标定系列】相机成像的理想模型原理,相机矩阵分解
- SCCM2007系列教程之一SCCM2007的安装
- 实测realme手机丢失定位功能
- Windows环境下配置深度强化学习环境玩Atari游戏
- 【C语言程序设计】C语言三色旗问题!
- 【原创】samba移植到android流程
- VS code snippets
- 【码农学编曲】关于宿主软件和插件的推荐
- 如何把语音文件转成文字格式
- Solidworks如何绘制螺纹
- 订阅号服务器消息推送数量,如何解决微信公众号一个月只能发4次消息的问题...
- 技术图文:基于《权力的游戏》数据集学Pandas
- C#开发WINCE系统的PDA程序,GetSystemMetrics获取屏幕长宽以达到自适应分辨率
热门文章
- 【读书笔记】iOS-设计简单的Frenzic式益智游戏
- Visual Studio 2010 C++ 工程文件解读
- 深入了解UIAutomation 的API
- 四-1、Cadence Allegro推荐操作方式和视图命令
- 使用GPU在caffe上进行CNN训练
- 白盒测试之初识gtest工具
- sphinx全文检索功能 | windows下测试 (二)
- 继承 :5、程序设计 类:汽车类 属性:排量(outPut),颜色(color) 		行为:驾驶(drive)
- mysql常用的约束_MySQL常用的约束条件
- OpenGL之控制渲染图形的移动