Skip to content

Commit f84a6b5

Browse files
authored
Update _239.java
1 parent bb95fd3 commit f84a6b5

File tree

1 file changed

+19
-18
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+19
-18
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
package com.fishercoder.solutions;
22

3-
import java.util.PriorityQueue;
3+
import java.util.LinkedList;
44

55
public class _239 {
66

77
public static class Solution1 {
8-
public int[] maxSlidingWindow(int[] nums, int k) {
9-
if (nums == null || nums.length == 0 || k == 0) {
10-
return new int[0];
8+
public int[] maxSlidingWindow(int[] nums, int k) {
9+
int n = nums.length;
10+
if (n == 0) {
11+
return nums;
12+
}
13+
int[] result = new int[n - k + 1];
14+
LinkedList<Integer> dq = new LinkedList<>();
15+
for (int i = 0; i < n; i++) {
16+
if (!dq.isEmpty() && dq.peek() < i - k + 1) {
17+
dq.poll();
18+
}
19+
while (!dq.isEmpty() && nums[i] >= nums[dq.peekLast()]) {
20+
dq.pollLast();
1121
}
12-
PriorityQueue<Integer> heap = new PriorityQueue<>((a, b) -> b - a);
13-
int[] res = new int[nums.length - k + 1];
14-
for (int i = 0; i < nums.length; i++) {
15-
if (i < k) {
16-
heap.offer(nums[i]);
17-
if (i == k - 1) {
18-
res[0] = heap.peek();
19-
}
20-
} else {
21-
heap.remove(nums[i - k]);
22-
heap.offer(nums[i]);
23-
res[i - k + 1] = heap.peek();
24-
}
22+
dq.offer(i);
23+
if (i - k + 1 >= 0) {
24+
result[i - k + 1] = nums[dq.peek()];
2525
}
26-
return res;
2726
}
27+
return result;
2828
}
29+
}
2930
}

0 commit comments

Comments
 (0)