给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。
进阶:
你能在线性时间复杂度内解决此题吗?
来源:力扣(LeetCode)
"""
@author: WowlNAN
@created: 2020-07-30 03:30PM
@github: https://github.com/WowlNAN
"""
class Solution:
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
if k==1:
return nums
a=[]
b=[]
if len(nums)==0 or k==0:
return a
for i in range(len(nums)):
if len(b)>0 and b[0] <= i - k:
b=b[1:]
while len(b)>0 and nums[b[-1]] < nums[i]:
b=b[:len(b)-1]
b.append(i)
if i + 1 >= k:
a.append(nums[b[0]])
return a