Monotonic decreasing deque. Remove smaller from back, remove out-of-window from front.
function maxSlidingWindow(nums, k): deque = [] result = [] for i in range(len(nums)): while deque and nums[deque[-1]] < nums[i]: deque.pop() deque.append(i) if deque[0] <= i - k: deque.popleft() if i >= k - 1: result.append(nums[deque[0]]) return result
time, space.