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

力扣239 滑动窗口最大值 Java版本

文章目录

  • 题目描述
  • 代码


题目描述

给你一个整数数组 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
示例 2:

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

提示:

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

代码

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {//使用队列来保存最大值Deque<Integer> deque = new ArrayDeque<>();//用于返回的结果数组int[] res = new int[nums.length - k + 1];int idx = 0;//队列里面存储的不是Nums的值是nums的下标for (int i = 0; i < nums.length; i++) {//这一个while循环是为了去除掉队列前面滑动窗口已经滑过的元素while (!deque.isEmpty() && deque.peek() < i - k + 1) {deque.poll();}//下面这一个while循环是为了保证对头的元素就是整个队列中最大的元素while (!deque.isEmpty() && nums[i] > nums[deque.peekLast()]) {deque.pollLast();}deque.offer(i);//一开始滑动窗口还没有达到k的长度就不加入res中if (i >= k - 1) {res[idx++] = nums[deque.peek()];}}return res;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++ 新特性
  • Ceph官方文档_02_Ceph初学者指南
  • 基于php的小说阅读系统
  • docker安装及使用
  • CS61B学习 part1
  • Python Web 中间件开发与优化指南
  • 使用sqoop报错
  • JavaScript可视化
  • Hive企业级调优[3]—— Explain 查看执行计划
  • Linux(ubuntu)(文件IO——fopen)
  • 多层感知机paddle
  • 人工智能|集成学习——混合专家模型 (MoE)
  • C#中线程池【异步】
  • C++从入门到入土(五)——再谈构造函数
  • UDP_SOCKET编程实现
  • 【笔记】你不知道的JS读书笔记——Promise
  • 2017-08-04 前端日报
  • centos安装java运行环境jdk+tomcat
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Magento 1.x 中文订单打印乱码
  • ucore操作系统实验笔记 - 重新理解中断
  • Vue.js 移动端适配之 vw 解决方案
  • Webpack 4 学习01(基础配置)
  • zookeeper系列(七)实战分布式命名服务
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 动态魔术使用DBMS_SQL
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 构建工具 - 收藏集 - 掘金
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 蓝海存储开关机注意事项总结
  • 我建了一个叫Hello World的项目
  • Semaphore
  • ​configparser --- 配置文件解析器​
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #mysql 8.0 踩坑日记
  • #NOIP 2014# day.1 T2 联合权值
  • (11)MATLAB PCA+SVM 人脸识别
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (pojstep1.1.2)2654(直叙式模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (备份) esp32 GPIO
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原)Matlab的svmtrain和svmclassify
  • (转)3D模板阴影原理
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)程序员疫苗:代码注入
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET6 命令行启动及发布单个Exe文件
  • .NET微信公众号开发-2.0创建自定义菜单
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题