提交 ce672191 编写于 作者: H hzs

[239.滑动窗口最大值] [Python]

上级 8b8f4135
......@@ -210,4 +210,52 @@ vector<int> maxSlidingWindow(vector<int>& nums, int k) {
<img src="../pictures/qrcode.jpg" width=200 >
</p>
======其他语言代码======
\ No newline at end of file
======其他语言代码======
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
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册