滑动窗口最大值

滑动窗口最大值

题目

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。

链接:https://leetcode-cn.com/problems/sliding-window-maximum/

思路

维护窗口,向右移动时左侧超出窗口的值弹出,因为需要的是窗口内的最大值,所以只要保证窗口内的值是递减的即可,小于新加入的值全部弹出。

Python代码

class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        window = []
        ly = []
        for i,value in enumerate(nums):
            if i >= k and window[0] <= i-k:
                window.pop(0)
            while window and nums[window[-1]] <= value:
                window.pop()
            window.append(i)
            if i >= k-1:
                ly.append(nums[window[0]])
        return ly

相关知识点

for i,value in enumerate(nums)——其中i代表索引值,value代表值

执行结果

执行用时 : 68 ms, 在所有 Python3 提交中击败了95.00% 的用户
内存消耗 : 17.3 MB, 在所有 Python3 提交中击败了100.00%的用户

发布了36 篇原创文章 · 获赞 8 · 访问量 1105
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览