滑动窗口的最大值

来源:互联网 发布:全息图片制作软件 编辑:程序博客网 时间:2024/05/29 07:59
//题目:给定一个数组和滑动窗口的大小,找出滑动窗口的最大值//比如数组为:{2,3,4,2,6,2,5,1},滑动窗口的大小为3://输出:{4,4,6,6,6,5}
public class SllidWindow {public static void main(String[] args) {// TODO Auto-generated method stubint[] datas = {2,3,4,2,6,2,5,1};for(int i : findMaxInWindow(datas, 3)){System.out.print(i);}}    public static int[] findMaxInWindow(int[] datas,int size){int[] res = new int[datas.length-size+1];LinkedList<Integer> queue = new LinkedList<Integer>();for(int i = 0;i<size;i++){if(!queue.isEmpty()&&datas[i]>=datas[queue.getLast()]){queue.removeLast();}queue.addLast(i);}for(int i = size;i<datas.length;i++){res[i-size] = datas[queue.getFirst()];if(!queue.isEmpty()&&datas[i]>=datas[queue.getLast()]){queue.removeLast();}if(!queue.isEmpty()&&(i-queue.getFirst())>=size){queue.removeFirst();}queue.addLast(i);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      }res[res.length-1] = datas[queue.getFirst()];return res;}}

0 0