mirror of
https://github.com/labuladong/fucking-algorithm.git
synced 2025-07-04 19:28:07 +08:00
[239.滑动窗口最大值] [Python]
This commit is contained in:
@ -210,4 +210,52 @@ vector<int> maxSlidingWindow(vector<int>& nums, int k) {
|
||||
<img src="../pictures/qrcode.jpg" width=200 >
|
||||
</p>
|
||||
|
||||
======其他语言代码======
|
||||
======其他语言代码======
|
||||
|
||||
python3版本
|
||||
|
||||
```python
|
||||
from collections import deque
|
||||
|
||||
class MonotonicQueue(object):
|
||||
def __init__(self):
|
||||
# 双端队列
|
||||
self.data = deque()
|
||||
|
||||
def push(self, n):
|
||||
# 实现单调队列的push方法
|
||||
while self.data and self.data[-1] < n:
|
||||
self.data.pop()
|
||||
self.data.append(n)
|
||||
|
||||
def max(self):
|
||||
# 取得单调队列中的最大值
|
||||
return self.data[0]
|
||||
|
||||
def pop(self, n):
|
||||
# 实现单调队列的pop方法
|
||||
if self.data and self.data[0] == n:
|
||||
self.data.popleft()
|
||||
|
||||
|
||||
class Solution:
|
||||
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
|
||||
# 单调队列实现的窗口
|
||||
window = MonotonicQueue()
|
||||
|
||||
# 结果
|
||||
res = []
|
||||
|
||||
for i in range(0, len(nums)):
|
||||
|
||||
if i < k-1:
|
||||
# 先填满窗口前k-1
|
||||
window.push(nums[i])
|
||||
else:
|
||||
# 窗口向前滑动
|
||||
window.push(nums[i])
|
||||
res.append(window.max())
|
||||
window.pop(nums[i-k+1])
|
||||
return res
|
||||
|
||||
```
|
Reference in New Issue
Block a user