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

【239.滑动窗口最大值】【Python】
This commit is contained in:
BruceCat
2021-03-09 19:22:23 +08:00
committed by GitHub

View File

@ -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) {