import java.util.*;
public class Solution {
// 单调栈,单调递增
public ArrayList<Integer> maxInWindows(int [] num, int size) {
ArrayList<Integer> res = new ArrayList<>();
LinkedList<Integer> deque = new LinkedList<>();
int n = num.length;
for (int i = 0; i < n; i++ ){
while (!deque.isEmpty() && num[deque.peekLast()] < num[i]){
deque.removeLast();
}
deque.addLast(i);
if (i - deque.peekFirst() >= size){
deque.removeFirst();
}
if (i >= size - 1){
res.add(num[deque.peekFirst()]);
}
}
return res;
}
}
牛客网:NC82 滑动窗口的最大值
最新推荐文章于 2025-12-01 18:34:47 发布
该篇博客介绍了如何使用Java的单调栈数据结构来解决找到数组中每个大小为size的窗口内的最大值。代码中展示了具体的实现细节,包括栈的压入和弹出操作,确保栈内始终保存当前窗口内的递增元素。此方法适用于处理动态窗口的最大值查询问题。

148

被折叠的 条评论
为什么被折叠?



