import java.util.*;
public class Solution {
public ArrayList<Integer> maxInWindows(int [] num, int size) {
if(size==0||size>num.length){
return new ArrayList<Integer>();
}
int n = num.length;
Deque<Integer> deque = new LinkedList<Integer>();
for (int i = 0; i < size; ++i) {
while (!deque.isEmpty() && num[i] >= num[deque.peekLast()]) {
deque.pollLast();
}
deque.offerLast(i);
}
ArrayList<Integer> ans = new ArrayList<Integer>();
ans.add(num[deque.peekFirst()]);
for (int i = size; i < n; ++i) {
while (!deque.isEmpty() && num[i] >= num[deque.peekLast()]) {
deque.pollLast();
}
deque.offerLast(i);
while (deque.peekFirst() <= i - size) {
deque.pollFirst();
}
ans.add(num[deque.peekFirst()]);
}
return ans;
}
}
2021-11-16(JZ59 滑动窗口的最大值)
最新推荐文章于 2022-02-16 16:46:12 发布