力扣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;
	}

}
相关推荐
见叶之秋17 分钟前
C++ 泛型世界的两块拼图:容器适配器与仿函数
java·开发语言
MayBaymax31 分钟前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
Dovis(誓平步青云)39 分钟前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
嘎嘎风42 分钟前
MiniMind 学习笔记之 07 模型怎么学会猜词(旋钮是怎么被拧动的)
算法·源码阅读
yuniko-n1 小时前
【Java】字符串相关坑点
java·开发语言·python
Terra.K1 小时前
Spring AI day1(SSE+AI)
java·人工智能·spring·springai
斑鸠喳喳1 小时前
线程本地存储 ThreadLocal
java·后端
和裕1 小时前
定制纸箱刀模费全解析:费用定义与可减免合作场景
大数据·运维·网络·人工智能·算法
白山编程大哥1 小时前
C语言篇:语法进阶
c语言·数据结构·算法
Wang's Blog2 小时前
Java框架 SpringCloud 快速入门: 服务拆分案例 Demo
java·开发语言·spring cloud