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

}
相关推荐
rchmin2 分钟前
Spring Boot自动装配原理解析
java·spring boot·后端
MobotStone3 分钟前
一夜蒸发1000亿美元后,Google用什么夺回AI王座
算法
Wang201220137 分钟前
RNN和LSTM对比
人工智能·算法·架构
程序员小假8 分钟前
我们来说一下 synchronized 与 ReentrantLock 的区别
java·后端
益达32110 分钟前
【避坑指南】Maven依赖冲突怎么解决?用mvn dependency:tree一眼看清
java
xueyongfu11 分钟前
从Diffusion到VLA pi0(π0)
人工智能·算法·stable diffusion
永远睡不够的入21 分钟前
快排(非递归)和归并的实现
数据结构·算法·深度优先
cheems952722 分钟前
二叉树深搜算法练习(一)
数据结构·算法
sin_hielo24 分钟前
leetcode 3074
数据结构·算法·leetcode
Yzzz-F30 分钟前
算法竞赛进阶指南 动态规划 背包
算法·动态规划