-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathh239 v2.py
29 lines (24 loc) · 1010 Bytes
/
h239 v2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# [40/50% region]
class Solution:
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
numSlides = len(nums) - k + 1
output = [0] * numSlides
# indices of values to use
dequeueuee = deque()
# initializing the first bit of space with deque index records
for i in range(0, k - 1) :
if not dequeueuee :
dequeueuee.append(i)
continue
while dequeueuee and nums[dequeueuee[0]] <= nums[i] :
dequeueuee.popleft()
dequeueuee.appendleft(i)
# rest of it lol
for i in range(k - 1, len(nums)) :
while dequeueuee and dequeueuee[-1] < i - k + 1 :
dequeueuee.pop()
while dequeueuee and (dequeueuee[0] < i - k + 1 or nums[dequeueuee[0]] <= nums[i]) :
dequeueuee.popleft()
dequeueuee.appendleft(i)
output[i - k + 1] = nums[dequeueuee[-1]]
return output