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 个高频元素 ● 总结