239. 滑动窗口最大值
作者:互联网
package leetcode; import java.util.LinkedList; public class demo_239 { public int[] maxSlidingWindow(int[] nums, int k) { if(nums==null||nums.length<2) {return nums;} int[] result=new int[nums.length-k+1]; //设计一个双端队列 LinkedList<Integer> queue=new LinkedList<Integer>(); for(int i=0;i<nums.length;i++) { //从队列往后依次加入元素,如果队列末尾元素小于当前元素直接弹出 while(!queue.isEmpty()&&nums[queue.peekLast()]<=nums[i]) { queue.pollLast(); } //队列中只加入当前元素的下标 queue.addLast(i); //滑动串口的左边界已经查处K的范围,则弹出 if(queue.peek()==i-k) { queue.pollFirst(); } //队列中的头元素对应的值就是当前滑动窗口中的最大值 if(i+1>=k) { result[i-k+1]=nums[queue.peek()]; } } for (int i : result) { System.out.println(i); } return result; } public static void main(String[] args) { // TODO Auto-generated method stub demo_239 demo=new demo_239(); int[] result= {7,2,4}; demo.maxSlidingWindow(result, 2); } }
标签:nums,int,demo,最大值,239,滑动,public,result 来源: https://www.cnblogs.com/Yshun/p/16121247.html