当前位置: 首页 > news >正文

239.滑动窗口的最大值

题目:

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

返回 滑动窗口中的最大值 

示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置                最大值
---------------               -----
[1  3  -1] -3  5  3  6  7       3
 1 [3  -1  -3] 5  3  6  7       3
 1  3 [-1  -3  5] 3  6  7       5
 1  3  -1 [-3  5  3] 6  7       5
 1  3  -1  -3 [5  3  6] 7       6
 1  3  -1  -3  5 [3  6  7]      7

示例 2:

输入:nums = [1], k = 1
输出:[1]

提示:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104
  • 1 <= k <= nums.length

解题思路:

使用双端队列,如果队列头部索引值不在当前的窗口内就将数据出队,移除队列尾部所有比当前元素小的索引,保持队列递减,然后将当前索引加入队列,当遍历到第k个元素及之后时,每次循环将队列头部索引对应的元素值加入结果列表。

代码:

from collections import deque

class Solution:
    def maxSlidingWindow(self, nums, k: int):
        if not nums:
            return []
        if k==1:
            return nums
                
        dq = deque()
        length = len(nums)
        results = []
        for i in range(length):
            while dq and dq[0]<i-k+1:
                dq.popleft()
            while dq and nums[i]>nums[dq[-1]]:
                dq.pop()
            dq.append(i)
            if i>=k-1:
                results.append(nums[dq[0]])
        return results

http://www.dtcms.com/a/72351.html

相关文章:

  • Power Apps 技术分享:连接SharePoint列表数据源
  • AI大模型完全指南:从核心原理到行业落地实践
  • 《MATLAB定位与滤波例程》专栏目录,持续更新……
  • 出海独立开发者如何利用Backlink提升产品曝光与流量
  • Netty基础—6.Netty实现RPC服务三
  • C++模版(复习)
  • 第15章:ConvNeXt图像分类实战:遥感场景分类【包含本地网页部署、迁移学习】
  • java实现二叉树的深度优先遍历
  • Neo4j 图数据库教程
  • HashMap源码解读
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Restful的出现,背景和进化,矛盾与取舍
  • 深入理解传输层协议
  • 计算机网络-扩展
  • 【MySQL基础-8】MySQL条件查询详解:高效筛选数据的艺术
  • 群体智能优化算法-旗鱼优化算法 (Sailfish Optimizer, SFO,含Matlab源代码)
  • 大模型的参数数量与学习的知识数量之间
  • Linux系统移植篇(二)Uboot 顶层 Makefile 解析
  • 小测验——根据内参计算一对RGB-D图像对应的点云
  • 计算机二级Python资料
  • Git 常用命令指南
  • 压缩流-ZipOutputStream的用法详解
  • mac系统之MySql图形化工具MySQLworkbench安装
  • 什么是网络协议
  • 【蓝桥杯每日一题】3.16
  • 软件架构设计、详细设计和开发编码的过程中提高性能的技巧和方法
  • 解决PC串流至IPad Pro时由于分辨率不一致导致的黑边问题和鼠标滚轮反转问题
  • 印章/公章识别:PaddleX下的“Seal-Recognition”模型
  • 【从零开始学习计算机科学】算法分析(二)排序算法 与 分治法
  • Linux中安装maven
  • 【QA】建造者模式在Qt有哪些应用