java 滑动窗口最大元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 滑动窗口最大元素相关的知识,希望对你有一定的参考价值。

import java.util.*;
public class SlidingWindowMax {
    public static void main(String args[]) {
        SlidingWindowMax slidingMax = new SlidingWindowMax();
        int[][] input = {
          null,
          {},
          {1,3,-1,-3,5,3,6,7},
          {2,6,0,9,7,3,1,4,1,10},
          {0,5,-7,1,-4,7,6,1,4,19}
        };
        
        for(int i=0; i< input.length; i++) {
            int k = 3;
            System.out.println("Input: " + Arrays.toString(input[i]) + ", k=" + k +" Result: " + Arrays.toString(slidingMax.find(input[i], k)));
        }
    }
    public int[] find(int[] nums, int k) {
        if(nums == null || nums.length < 1) {
            return new int[0];
        }
        int[] result = new int[nums.length - k + 1];
        int j=0;
        Deque<Integer> deque = new ArrayDeque<>();
        for(int i=0; i<nums.length; i++) {
            if(!deque.isEmpty() && deque.peekFirst() == i - k) {
                deque.removeFirst();
            }
            while(!deque.isEmpty() && nums[i] > nums[deque.peekLast()]) {
                deque.removeLast();
            }
            deque.addLast(i);
            if(i >= k-1) {
                result[j++] = nums[deque.peekFirst()];
            }
        }
        return result;
    }
}

以上是关于java 滑动窗口最大元素的主要内容,如果未能解决你的问题,请参考以下文章

滑动窗口最大值

剑指offer59队列的最大值(不熟)

java LeetCode - 滑动窗口maxmum滑动窗口最大值

Java 求解滑动窗口最大值

239-滑动窗口最大值

代码随想录算法训练营第13天 | ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结