java 实现滑动窗口
时间: 2023-08-02 21:06:23 浏览: 93
java实现滑动按钮
以下是 Java 实现滑动窗口的一个示例代码:
```java
public class SlidingWindow {
public int[] maxSlidingWindow(int[] nums, int k) {
if (nums == null || nums.length == 0 || k <= 0) {
return new int[0];
}
int n = nums.length;
int[] result = new int[n - k + 1];
Deque<Integer> deque = new ArrayDeque<>();
for (int i = 0; i < n; i++) {
while (!deque.isEmpty() && deque.peek() < i - k + 1) {
deque.poll();
}
while (!deque.isEmpty() && nums[deque.peekLast()] < nums[i]) {
deque.pollLast();
}
deque.offer(i);
if (i - k + 1 >= 0) {
result[i - k + 1] = nums[deque.peek()];
}
}
return result;
}
}
```
这段代码实现了一个求解滑动窗口最大值的函数,输入是一个整数数组nums和一个整数k,输出是一个数组,表示每个滑动窗口的最大值。
算法的核心思想是维护一个双端队列,队列中存储的是窗口中的下标。遍历整个数组时,我们不断将新的元素加入队列中,同时在队列的两端保持单调性,使得队列中的第一个元素始终是窗口中的最大值。当队列中的最小元素已经不在当前窗口中时,我们将其从队列中移除。当窗口的大小达到k时,我们取出队列中的第一个元素,即为当前窗口的最大值。
阅读全文