1def maxSlidingWindow(nums, k):
2 deque = [] # stores indices
3 result = []
4
5 for i in range(len(nums)):
6 # Remove elements outside window
7 if deque and deque[0] <= i - k:
8 deque.pop(0)
9
10 # Remove smaller elements from back
11 while deque and nums[deque[-1]] <= nums[i]:
12 deque.pop()
13
14 # Add current index
15 deque.append(i)
16
17 # Add to result if window complete
18 if i >= k - 1:
19 result.append(nums[deque[0]])
20
21 return result