数组模拟队列,存放当前窗口最大值
滑动窗口的最大值
http://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
import java.util.*;
public class Solution {
public ArrayList<Integer> maxInWindows(int [] num, int size) {
ArrayList<Integer> res = new ArrayList<>();
if(size == 0) return res;
int hh = 0,tt = -1;
int[] arr = new int[num.length];
for(int i = 0;i < num.length;i++){
if(hh <= tt && i - arr[hh] >= size) hh++;
while(hh <= tt && num[i] > num[arr[tt]]) tt--;
arr[++tt] = i;
if(i >= size - 1 && hh <= tt) res.add(num[arr[hh]]);
}
return res;
}
}
腾讯云智研发成长空间 5048人发布