力扣hot100 滑动窗口最大值 单调队列

👨‍🏫 题目地址

🍻 AC code

java 复制代码
class Solution {
    public int[] maxSlidingWindow(int[] nums, int k)
	{
		int n = nums.length;
		int[] res = new int[n - k + 1];
//		单调递减队列
		int[] q = new int[n];// q数组维护的是元素在 nums 数组对应的下标
		int h = 0, t = -1;

		for (int i = 0; i < n; i++)// 枚举每一个窗口
		{
			if (h <= t && i - k + 1 > q[h])// 队头滑出窗口
				h++;

			while (h <= t && nums[q[t]] <= nums[i])// 处理新元素,维持队列单调递减
				t--;
			q[++t] = i;//新元素入队
			if (i >= k - 1)//窗口大小达到k才记录答案
				res[i - k + 1] = nums[q[h]];
		}
		return res;
	}

}
相关推荐
稻草人想看远方2 分钟前
GC垃圾回收
java·开发语言·jvm
papership34 分钟前
【入门级-算法-6、排序算法: 插入排序】
数据结构·算法·排序算法
HAH-HAH44 分钟前
【蓝桥杯 2024 国 Java A】粉刷匠小蓝
c++·学习·数学·算法·职场和发展·蓝桥杯·组合数学
en-route1 小时前
如何在 Spring Boot 中指定不同的配置文件?
java·spring boot·后端
百锦再1 小时前
在 CentOS 系统上实现定时执行 Python 邮件发送任务
java·linux·开发语言·人工智能·python·centos·pygame
echoyu.1 小时前
消息队列-kafka完结
java·分布式·kafka
七夜zippoe1 小时前
分布式事务性能优化:从故障现场到方案落地的实战手记(二)
java·分布式·性能优化
栀椩1 小时前
springboot配置请求日志
java·spring boot·后端
番薯大佬1 小时前
Python学习-day8 元组tuple
java·python·学习
何似在人间5751 小时前
Go语言快速入门教程(JAVA转go)——1 概述
java·开发语言·golang