当前位置: 首页 > news >正文

力扣 hot100 滑动窗口最大值 单调双端队列 java 简单题解

题目链接:239. 滑动窗口最大值 - 力扣(LeetCode)

题目描述:

给你一个整数数组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 731 [3 -1 -3] 5 3 6 731 3 [-1 -3 5] 3 6 751 3 -1 [-3 5 3] 6 751 3 -1 -3 [5 3 6] 761 3 -1 -3 5 [3 6 7]7

示例 2:

输入:nums = [1], k = 1输出:[1]

提示:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104
  • 1 <= k <= nums.length

我的思路:

创建一个队列,然后在遍历数组的过程中对比队尾和最新的数,用while遍历并且判断队尾小就不抛弃,大的话就抛弃,后面添加最新的i的数据,判断队头是否小于等于i-k来确定当前的最大值是否不存在于窗口来绝对抛弃,实现窗口的更新,最后让一个答案数组记录当前队头的数值,也就是答案

我的代码:

class Solution { public int[] maxSlidingWindow(int[] nums, int k) { LinkedList<Integer> integers = new LinkedList<>(); for (int i = 0; i < k; i++) { while (!integers.isEmpty()&&nums[i]>=nums[integers.peekLast()]){ integers.pollLast(); } integers.offerLast(i); } int[] ints = new int[nums.length - k + 1]; ints[0] = nums[integers.peekFirst()]; for (int i = k; i < nums.length; i++) { while (!integers.isEmpty()&&nums[i]>=nums[integers.peekLast()]){ integers.pollLast(); } integers.offerLast(i); while (integers.peekFirst()<=i-k){ integers.pollFirst(); } ints[i-k+1]=nums[integers.peekFirst()]; } return ints; } }
http://www.jsqmd.com/news/497646/

相关文章:

  • 金融交易系统高可用测试指南:构建永不宕机的安全防线
  • SGI备份还原单文件版
  • 天地图中使用html2canvas问题
  • Zen Browser:基于 Firefox 的极简开源浏览器,隐私与速度兼得
  • Linux系统文件操作简介
  • OpenClaw 核心功能解析:一文让你彻底搞懂 OpenClaw
  • Win 32 API:初步了解与应用
  • 2026年SCI论文降AI率用什么工具?实测5款后选了这个
  • 4K型护套连接器ZE0703-09(250)参数
  • hello-agent task01打卡
  • PDF文件拆分, 不限制文件大小
  • 携程任我行礼品卡回收秒变现攻略 - 京顺回收
  • 任务栏标语图片
  • 加一 - 题目笔记
  • MySQL主键设计原则与自增ID的潜在问题分析
  • 自动化测试常用函数(元素的定位)
  • 技术分享-日志链路追踪
  • 龙虾智能体不是玩具!国家安全部提醒:这3个防护步骤必做
  • (独自升级Lv.1)C++基础面试题
  • 从零学网安第四期--在kali里面制作木马程序并实现远程控制
  • 238. 除了自身以外数组的乘积
  • 自动驾驶购物车测试:超市里的交通拥堵难题——软件测试工程师的实战解构
  • 《MySQL数据库基础》4. 数据类型
  • 别再花冤枉钱了!强推10款国内免费降AI神器,一键破解论文AIGC难题(附传送门)
  • 基于Vue.js的实验室耗材管理系统设计与实现 毕业设计源码+论文+PPT
  • 基础 语法
  • 机器人关节润滑脂如何选择?工程师必须了解的技术指标
  • 数组指针:高效操作多维数组
  • MATLAB与CST联合仿真:快速建模超表面阵列,涡旋波生成与雷达散射优化
  • 分享两道关于运算符号的题目