给你一个整数数组 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

代码

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {LinkedList<Integer> stack=new LinkedList<>();ArrayList<Integer> list=new ArrayList<>();for(int i=0;i<k;i++)//初始化第一个滑动区间里的单调栈{while (!stack.isEmpty()&&nums[i]>stack.getLast())stack.removeLast();stack.addLast(nums[i]);}list.add(stack.getFirst());for(int i=k;i<nums.length;i++)//滑动窗口向右滑动的同时,维护单调栈{if(nums[i-k]==stack.getFirst()) stack.removeFirst();//判断滑出窗口的元素是否属于单调栈的一部分while (!stack.isEmpty()&&nums[i]>stack.getLast())stack.removeLast();stack.addLast(nums[i]);list.add(stack.getFirst());}int[] res=new int[list.size()];for(int i=0;i<list.size();i++)res[i]=list.get(i);return res;}
}

leetcode 239. 滑动窗口最大值(单调队列)相关推荐

  1. LeetCode 239. 滑动窗口最大值(双端队列+单调栈)

    文章目录 1. 题目信息 2. 解题 2.1 暴力法 2.2 双端队列法 1. 题目信息 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内 ...

  2. 滑动窗口最大值--单调队列

    我们需要一种特别的队列,这个队列放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最大值是什么. 每次窗口移动的时候,调用que.pop(滑动窗口中移除元素的数值 ...

  3. LeetCode 239:滑动窗口最大值 思考分析

    给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 进阶: 你能在线性 ...

  4. 2022-3-26 Leetcode 239.滑动窗口最大值

    class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums == null || nums.length < ...

  5. 【LeetCode】【HOT】239. 滑动窗口最大值(双向队列)

    [LeetCode][HOT]239. 滑动窗口最大值 文章目录 [LeetCode][HOT]239. 滑动窗口最大值 package hot;import java.util.Arrays; im ...

  6. Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素

    day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...

  7. 单调区间之239.滑动窗口最大值

    单调区间 239. 滑动窗口最大值 这个题如果用普通的优先队列是有问题的,因为每次弹出去的不知道是上一个窗口的左边界还是这个窗口里的元素.我们要的是每次只弹出上一个窗口的左边界并且还能弹出最值,所以这 ...

  8. 力扣239. 滑动窗口最大值(自定义排序队列)

    239. 滑动窗口最大值 //实现功能:peek()取得队列的最大值,比最大值先添加进来的删除,后添加进来的保留 class Mydeque{Deque<Integer> deque;pu ...

  9. 代码随想录算法训练营day13 | 239. 滑动窗口最大值 | 347.前 K 个高频元素

    一.239. 滑动窗口最大值 from collections import dequeclass MyQueue: #单调队列(从大到小def __init__(self):self.queue = ...

最新文章

  1. usaco Magic Squares
  2. 中国科学院院士梅宏:云计算这十年
  3. 如何得到juniper的pe ip device_name filter name等
  4. bigdecimal 小于等于0_图解小于 K 的两数之和
  5. 给生命一个助跑的过程(图)
  6. Sql Server 开窗函数Over()的使用
  7. 图片浏览器每次只能打开一张图片_好嗨哟!微信图片批量提取下载,我只用了3秒钟~...
  8. 李彦宏卸任百度投资管理有限公司董事 马东敏上任
  9. 【jackson】@JsonDeserialize 和 @JsonSerialize
  10. 无法获取保存在session中的验证码
  11. 敏捷开发“松结对编程”系列之八:微软 Tech ed2011 自组织团队与松结对编程讲稿(敏捷开发)...
  12. Installation of Ubuntu source-insight
  13. 20-21-2网络管理quiz2
  14. python eval函数_Python基础元素语法总结
  15. Java程序-自制班级随机选人程序
  16. android切换皮肤,Android 应用更换皮肤实现方法
  17. 零基础一次通过软考网络工程师经验分享
  18. 在java中什么是迭代
  19. 好架构是进化来的,不是设计来的(58架构演进)
  20. P型半导体、N型半导体定义

热门文章

  1. 进程常用指令 (从创建到回收 包含守护)
  2. Celery介绍及常见错误
  3. bzoj 1996: [Hnoi2010]chorus 合唱队
  4. 2016/4/19 ①单个文件上传 ②上传图片后 预览图片
  5. Fragment与Activity交互(使用接口)
  6. Cppunit 源码 SynchronizedObject
  7. 01背包问题,动态规划求解
  8. 真正的Google搜索
  9. ROS project part 1: Ubuntu中安装opencv包以及相应的依赖
  10. laravel-admin 开发 bootstrap-treeview 扩展包