Skip to content

Commit 74f02c7

Browse files
authored
Merge pull request #110 from skanarul8002/main
DSA in Java: find maximum element in every sliding window of size k
2 parents 02b59c2 + 07530b3 commit 74f02c7

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

SlidingWindowMaximum.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import java.util.ArrayList;
2+
import java.util.Deque;
3+
import java.util.LinkedList;
4+
import java.util.List;
5+
6+
public class SlidingWindowMaximum {
7+
8+
// Function to find maximum element in every sliding window of size k
9+
public static List<Integer> maxSlidingWindow(int[] nums, int k) {
10+
List<Integer> result = new ArrayList<>();
11+
if (nums == null || nums.length == 0) {
12+
return result;
13+
}
14+
15+
Deque<Integer> deque = new LinkedList<>();
16+
17+
for (int i = 0; i < nums.length; i++) {
18+
if (!deque.isEmpty() && deque.peekFirst() < i - k + 1) {
19+
deque.pollFirst();
20+
}
21+
while (!deque.isEmpty() && nums[deque.peekLast()] < nums[i]) {
22+
deque.pollLast();
23+
}
24+
deque.offerLast(i);
25+
if (i >= k - 1) {
26+
result.add(nums[deque.peekFirst()]);
27+
}
28+
}
29+
return result;
30+
}
31+
32+
public static void main(String[] args) {
33+
int[] nums = { 1, 3, -1, -3, 5, 3, 6, 7 };
34+
int k = 3;
35+
36+
List<Integer> result = maxSlidingWindow(nums, k);
37+
System.out.println("Maximum elements in each sliding window of size " + k + ": " + result);
38+
}
39+
}

0 commit comments

Comments
 (0)