力扣239. 滑动窗口最大值(自定义排序队列)
239. 滑动窗口最大值
//实现功能:peek()取得队列的最大值,比最大值先添加进来的删除,后添加进来的保留
class Mydeque{Deque<Integer> deque;public Mydeque() {deque = new LinkedList<>();}public void add(int val){while(!deque.isEmpty() && val>deque.peekLast()){deque.removeLast();}deque.add(val);}public void poll(int val){if(!deque.isEmpty() && deque.peek()== val){deque.poll();}}public int top(){return deque.peek();}
}
class Solution {public int[] maxSlidingWindow(int[] nums, int k) {Mydeque deque = new Mydeque();ArrayList<Integer> ans = new ArrayList<>();for (int i = 0; i < k; i++) {deque.add(nums[i]);}ans.add(deque.top());for(int i = k; i<nums.length ;i++ ){//如果要删除的值是顶端的值,就删除,如果不是,说明之前已经删除过了。deque.poll(nums[i-k]);deque.add(nums[i]);ans.add(deque.top());}int[] res = new int[ans.size()];for (int i = 0; i < ans.size(); i++) {res[i] = ans.get(i);}return res;}
}
力扣239. 滑动窗口最大值(自定义排序队列)相关推荐
- 【LeetCode】【HOT】239. 滑动窗口最大值(双向队列)
[LeetCode][HOT]239. 滑动窗口最大值 文章目录 [LeetCode][HOT]239. 滑动窗口最大值 package hot;import java.util.Arrays; im ...
- leetcode 239. 滑动窗口最大值(单调队列)
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 示例 1: 输 ...
- Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素
day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...
- 代码随想录算法训练营day13 | 239. 滑动窗口最大值 | 347.前 K 个高频元素
一.239. 滑动窗口最大值 from collections import dequeclass MyQueue: #单调队列(从大到小def __init__(self):self.queue = ...
- 单调区间之239.滑动窗口最大值
单调区间 239. 滑动窗口最大值 这个题如果用普通的优先队列是有问题的,因为每次弹出去的不知道是上一个窗口的左边界还是这个窗口里的元素.我们要的是每次只弹出上一个窗口的左边界并且还能弹出最值,所以这 ...
- (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)
目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...
- LeetCode 239. 滑动窗口最大值(双端队列+单调栈)
文章目录 1. 题目信息 2. 解题 2.1 暴力法 2.2 双端队列法 1. 题目信息 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内 ...
- 2022-3-26 Leetcode 239.滑动窗口最大值
class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums == null || nums.length < ...
- LeetCode 239:滑动窗口最大值 思考分析
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 进阶: 你能在线性 ...
最新文章
- Centos7-Mysql 5.6 多主一从 解决方案详细配置
- (完全解决)Precision and F-score are ill-defined for being 0.0 in labels with no predicted samples.
- sql server修改索引名称_【索引潜规则】覆盖索引、ICP、MRR详解
- BASE64Encoder cannot be resolved to a type类似问题的解决办法
- 72 页 PPT,带你梳理神经网络完整架构(含 PyTorch 代码)
- volatile 和 synchronized的区别
- call、apply和bind的原生实现
- sql多表查询之一:Where 和 On的秘密
- bat脚本实现局域网所有存活IP的精准扫描
- 微信用久了,越来越占内存怎么办?
- java 线程重入,java synchronized加载加锁-线程可重入详解及实例代码
- mysql复制表的两种方法
- 微信开发JS接口安全域名 网页授权域名 业务域名
- 优秀logo,最基础的设计技巧(二)
- 读《禅与摩托车维修艺术》
- 使用Redis实现附近的人及打车服务
- pdf文件过大如何缩小上传
- 油藏生产业务+机器学习代理优化算法
- 安全计算:AntiVir Personal Edition提供免费病毒防护
- SAP HCM PY 个税累计方案