Sliding window maximum

Write codeHard35 minAmazon and Google style

Your task

Given a stream of integers nums and a window size w, return the list of maximums of every contiguous window of length w as the window slides one step at a time from left to right. If w is greater than len(nums), return an empty list. If w <= 0, also return an empty list. Solve it in O(n) using a monotonic deque rather than recomputing each window's max.

Examples

sliding_window_max(nums: list[int], w: int) -> list[int]
Example 1
Inputsliding_window_max([1, 3, -1, -3, 5, 3, 6, 7], 3)
Output[3, 3, 5, 5, 6, 7]