File tree Expand file tree Collapse file tree 1 file changed +12
-13
lines changed Expand file tree Collapse file tree 1 file changed +12
-13
lines changed Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int [] maxSlidingWindow (int [] nums , int k ) {
3
- if (nums == null || nums .length == 0 || k <= 0 ) {
4
- return new int [0 ];
5
- }
6
-
3
+ ArrayDeque <Integer > q = new ArrayDeque <>();
7
4
int [] result = new int [nums .length - k + 1 ];
8
- Deque <Integer > dq = new LinkedList <>();
9
5
10
- for (int idx = 0 ; idx < nums .length ; idx ++) {
11
- if (!dq .isEmpty () && dq .peek () < idx - k + 1 ) {
12
- dq .pollFirst ();
6
+ int idx = 0 ;
7
+
8
+ for (int i = 0 ; i < nums .length ; i ++) {
9
+ if (!q .isEmpty () && i - k + 1 > q .getFirst ()) {
10
+ q .removeFirst ();
13
11
}
14
12
15
- while (!dq .isEmpty () && nums [idx ] >= nums [dq . peekLast ()]) {
16
- dq . pollLast ();
13
+ while (!q .isEmpty () && nums [i ] >= nums [q . getLast ()]) {
14
+ q . removeLast ();
17
15
}
18
16
19
- dq . offer ( idx );
17
+ q . offerLast ( i );
20
18
21
- if (idx - k + 1 >= 0 ) {
22
- result [idx - k + 1 ] = nums [dq .peekFirst ()];
19
+ if (i + 1 >= k ) {
20
+ result [idx ] = nums [q .getFirst ()];
21
+ ++idx ;
23
22
}
24
23
}
25
24
You can’t perform that action at this time.
0 commit comments