题目:
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。
leetcode原题链接
思路:
双指针法,考虑三个问题:
- 双指针的初始值
- 遍历终止条件
- 左右指针的变化规则
滑动窗口大小固定,始终为k,且滑动窗口需遍历整个数组nums。
- 初始值:left=0,right=k-1,(right-left)始终为k。
- 终止条件:right=len(nums)-1,滑动窗口遍历完整个数组,此时right指针在数组最右端。
- 变化规则:left和right同时+1
其他知识点:
- 列表对象的 切片操作,append方法
- 列表对象的 max方法,max(nums) 返回列表nums元素中的最大值
代码:
class Solution:
def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
if nums == []:
return []
left=0
right=k-1
res=[]#用来存放最终结果的数组
while(right<len(nums)):#right=len(nums)-1时,最后一次执行while循环中的语句
res.append(max(nums[left:right+1]))#max()方法
left+=1
right+=1
return res
if语句的用途:针对测试用例1
待优化