File tree Expand file tree Collapse file tree 1 file changed +29
-1
lines changed Expand file tree Collapse file tree 1 file changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -302,7 +302,35 @@ class Solution:
302
302
303
303
```
304
304
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
+ ```
306
334
307
335
308
336
You can’t perform that action at this time.
0 commit comments