LeetCode Hot100 239.滑动窗口最大值

题目描述

给你一个整数数组 nums,有一个大小为 k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

返回 滑动窗口中的最大值

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

思路

维护一个单调栈,保证栈内的元素单调递减

那么每次插入就和栈顶作比较。

如果不满足某些性质,直接弹出栈顶,直到栈为空或满足该性质插入这个元素。

代码

java 复制代码
class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        int n=nums.length;
        int[] ans=new int[n-k+1];
        Deque<Integer> dq=new LinkedList<>();
        for(int i=0;i<n;i++){
            while(!dq.isEmpty()&&nums[i]>nums[dq.peekLast()]){
                dq.pollLast();
            }
            dq.addLast(i);
            while(dq.peekFirst()<i-k+1){
                dq.pollFirst();
            }
            if(i>=k-1){
                ans[i-k+1]=nums[dq.peekFirst()];
            }
        }
        return ans;
    }
}
相关推荐
Figo_Cheung几秒前
Figo《量子几何学:从希尔伯特空间到全息时空的统一理论体系》(十一)——量子计算几何算法的设计与实现
算法·几何学·量子计算
小石头 10086几秒前
【数据结构】哈希表
数据结构·哈希算法·哈希表
0 0 0几秒前
CCF-CSP 36-2 梦境巡查(dream)【C++】考点:前缀和
开发语言·c++·算法
徐子童1 分钟前
ArrayList和LinkedList的区别
java·开发语言·数据结构·高频面试题
VALENIAN瓦伦尼安教学设备1 分钟前
便携式蒸汽阀门漏气检测仪作用
人工智能·嵌入式硬件·算法
plus4s3 分钟前
3月11日(进阶3)
算法
luckycoding5 分钟前
42. 接雨水
leetcode
We་ct7 分钟前
LeetCode 39. 组合总和:DFS回溯解法详解
前端·算法·leetcode·typescript·深度优先·个人开发·回溯
小杍随笔8 分钟前
【Rust中所有符号的作用及使用场景详解】
java·算法·rust
MicroTech202512 分钟前
微算法科技(NASDAQ: MLGO)探索量子机器学习算法在预测模型中的应用,利用量子核方法提升复杂模式识别能力
科技·算法·机器学习