未验证 提交 ab252f34 编写于 作者: B BruceCat 提交者: GitHub

【239.滑动窗口最大值】【Python】

【239.滑动窗口最大值】【Python】
......@@ -211,6 +211,60 @@ vector<int> maxSlidingWindow(vector<int>& nums, int k) {
</p>
======其他语言代码======
### python3
[SCUHZS](ttps://github.com/brucecat)提供
```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
```
### java
```java
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册