其他分享
首页 > 其他分享> > 239. 滑动窗口最大值

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