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

JAVA算法练习题day9

11.滑动窗口最大值

看题解写的。双头队列(单调队列),他一步一步分析的思路值得学习模仿。

(239. 滑动窗口最大值 - 力扣(LeetCode))

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {//非严格单调减的队列int[] ans = new int[nums.length-k+1];Deque<Integer> window = new LinkedList<>();//right [0,n-1](因为要处理第一个元素nums[0]的入队,所以right的初始值就指向0)//int right = 0;//left [-k+1,n-1-k+1]; +1就是因为刚开始时候right已经有一个数了//int left = -k+1;//因为是一起自增的,left的自增可以写进for里面for(int right = 0,left = 1-k;right<nums.length;right++,left++){//维护窗口大小为K,实现删除元素,left>0表示此次循环(循环开始前left++,所以应当是nums[left-1]出队)应当有元素随着本次窗口的滑动。被移除if(left>0 && nums[left-1]==window.peekFirst()) window.removeFirst();//维护单调减队列,怎么实现插队后,删除插队位置后面的所有元素:因为是持续删除插队位置后面的所有元素,所以用while//这里的if怎么写while(!window.isEmpty() && nums[right]>window.peekLast() ){window.removeLast();}//while完成后将右移得到的新元素加入队列window.addLast(nums[right]);//当左边界有效时,记录答案 队首if(left>=0){ans[left]=window.peekFirst();}}return ans;}
}

题解各个方法中,单调队列的做法最优,先掌握这个,其他模型到了经典例题时候再学(大根堆之类的)。今天19.02就完成了算法题的学习和练习。继续加油。

http://www.lryc.cn/news/612474.html

相关文章:

  • 蓝桥杯----锁存器、LED、蜂鸣器、继电器、Motor
  • Pytest项目_day06(requests中Session的用法)
  • Python 进行点云ICP(lterative Closest Point)配准(精配准)
  • Java高频方法总结
  • 实习文档背诵
  • chdir系统调用及示例
  • docker启动出现Error response from daemon: Container的问题【已解决】
  • 92、【OS】【Nuttx】【构建】cmake 支持构建的目标
  • InfluxDB 集群部署与高可用方案(二)
  • 【概念学习】深度学习有何不同
  • 敏捷协作平台推荐:Jira、PingCode、Tapd等15款
  • iptables相关知识笔记
  • AI+物理融合新范式:物理信息神经网络(PINN)的深度研究报告
  • Flash Attention与SDPA
  • 深度探索:非静态内部类不能定义 static 成员属性和方法 及 静态内部类的必要性
  • AI Infra与LLM的联系与差异
  • ICCV 2025 | 视频生成迈入“多段一致”新时代!TokensGen用“压缩Token”玩转长视频生成
  • 【java】DDD架构同普通微服务项目的区别
  • 低代码系统的技术深度:超越“可视化操作”的架构与实现挑战
  • MCU编程中的临界资源及临界区
  • 【51单片机2个独立按键2个独立数码管静态显示内容自定】2022-10-22
  • 从 0 到 1 创建 InfluxDB 3 表:标签、字段、命名规范一篇讲透
  • 无人机航拍数据集|第4期 无人机太阳光伏板红外目标检测YOLO数据集10945张yolov11/yolov8/yolov5可训练
  • 无人机图传的得力助手:5G 便携式多卡高清视频融合终端的协同应用
  • ⭐CVPR 文本到 3D 场景生成新突破:Prometheus 框架解析
  • 小实验--继电器定时开闭
  • Pytest项目_day04(Python做接口请求)
  • vector使用模拟实现
  • Linux 学习 之 killer 问题
  • Unity笔记(三)——父子关系、坐标转换、Input、屏幕