滑动窗口最大值【子串】【滑动窗口】【双端队列】

Problem: 239. 滑动窗口最大值

思路 & 解题方法

实在是太太太太巧妙了!定义一个双端队列,然后存储下标,存储进去每一个数的下标时,都需要将现在有的数且小于当前的数字都去掉,因为它们更小且在前面就没有任何意义了,这样做还能使得双端队列最前面一直都是表示的当前窗口中最大的数字的下标。

复杂度

时间复杂度:

添加时间复杂度, 示例: O ( n ) O(n) O(n)

空间复杂度:

添加空间复杂度, 示例: O ( n ) O(n) O(n)

Code

class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        q = deque()
        ans = []
        for i, x in enumerate(nums):
            # 入,入之前要把它之前所有比他小的数字都出队,因为前面小的数都没有意义了
            while q and nums[q[-1]] < x:
                q.pop()
            q.append(i)
            # 出,如果最前面的数字在区间之外,就出队
            if i - q[0] >= k:
                q.popleft()
            # 记录答案,只需要在k-1之后再记录,因为前面不够区间长度
            if i >= k - 1:
                ans.append(nums[q[0]])
        return ans

相关推荐

  1. 【Leetcode】239. 滑动窗口

    2024-01-06 21:30:04       39 阅读
  2. 【LeetCode】239. 滑动窗口

    2024-01-06 21:30:04       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 21:30:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 21:30:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 21:30:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 21:30:04       20 阅读

热门阅读

  1. 使用chatgpt完成代码写作(免费收藏级)

    2024-01-06 21:30:04       49 阅读
  2. LabVIEW在机器人视觉抓取系统中应用

    2024-01-06 21:30:04       38 阅读
  3. EAS WEB附件下载实现

    2024-01-06 21:30:04       35 阅读
  4. 基于SpringBoot的物流管理系统

    2024-01-06 21:30:04       43 阅读
  5. 高考组数。

    2024-01-06 21:30:04       45 阅读
  6. MySQL5.7无法连接到[本地] MySQL 服务器

    2024-01-06 21:30:04       47 阅读
  7. 新版Edge如何卸载详细讲解

    2024-01-06 21:30:04       50 阅读
  8. 新版EDGE卸载

    2024-01-06 21:30:04       38 阅读
  9. c++求一个数是否是质数

    2024-01-06 21:30:04       42 阅读
  10. vue 微信扫码登录

    2024-01-06 21:30:04       48 阅读
  11. spring 之 TransactionManager使用详解

    2024-01-06 21:30:04       39 阅读
  12. python&Matplotlib四:Matplotlib设置图的样式和颜色

    2024-01-06 21:30:04       34 阅读
  13. 【Vue】灵魂拷问

    2024-01-06 21:30:04       34 阅读