Skip to content

Commit 7e21a50

Browse files
committed
Update stack_queue.md
1 parent 4a4d26e commit 7e21a50

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

data_structure/stack_queue.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,35 @@ class Solution:
302302

303303
```
304304

305-
或者考虑使用双边队列
305+
或者考虑构建一个单调队列,自定义其pop,push等操作。
306+
```python
307+
from collections import deque
308+
class MonoQueue:
309+
def __init__(self):
310+
self.dq = deque()
311+
def pop(self, val):
312+
if self.dq and self.dq[0] == val:
313+
self.dq.popleft()
314+
def push(self, val):
315+
while self.dq and self.dq[-1] < val:
316+
self.dq.pop()
317+
self.dq.append(val)
318+
319+
def front(self):
320+
return self.dq[0]
321+
322+
class Solution:
323+
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]: #最大堆队列
324+
mq = MonoQueue()
325+
ans = list()
326+
for i, num in enumerate(nums):
327+
mq.push(num)
328+
if i >= k - 1:
329+
ans.append(mq.front())
330+
mq.pop(nums[i-k+1])
331+
return ans
332+
333+
```
306334

307335

308336

0 commit comments

Comments
 (0)