LeetCode:滑动窗口最大值

文章收录于LeetCode专栏
LeetCode地址


滑动窗口最大值

题目

  给你一个整数数组 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]

双端队列

算法思路

  从题目可得,该题所指定的窗口是恒定的,同时只要进入窗口的元素比它前面的元素大,那么在它之前的元素就永远不再会成为最大值。所以根据以上两点分析可以使用一个双端队列,通过对双端队列的出队和入队操作来选择窗口中最大的元素值。所谓双端队列,其实就是队列的左右两端都可以进行入队和出队操作。
  以nums = [1,3,-1,-3,5,3,6,7],k = 3为例,具体思路如下:
  说明:双端队列维护的是元素对应的下标

  1. 初始窗口K长度的双端队列
    a. 队列为空,元素1直接从右端入队([1])
    b. 元素3大于队尾元素1,移除队尾元素1,然后元素3从右端入队([3])
    c. 元素-1小于队尾元素3,直接从右端入队([3,-1])
  2. 移动窗口维护双端队列
    a. 判断当前移动窗口的轮次是否已经超过双端队列左端的队首元素的下标
      i. 如果超过就需要先将双端队列左端的队首元素出队
       ii. 反之跳过此步骤
    b. 循环判断当前需入队的元素是否大于等于双端队列右端的队尾元素
       i. 如果大于等于,则移除双端队列右端的队尾元素,然后再循环判断
      ii. 反之跳过此步骤
    c. 将当前需入队的元素从双端队列的右端入队
    d. 将双端队列左端队首元素输出放入返回数组

  以上便是使用双端队列解答该题的详细思路,可结合以下动图理解
在这里插入图片描述

编码

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {Deque<Integer> deque = new ArrayDeque<>();int[] res = new int[nums.length - k + 1];for(int i=0; i<nums.length; i++){if(i >= k && deque.getFirst() <= i-k){// 如果双端队列头部元素的下标小于等于当前窗口首位元素的下标deque.removeFirst();}while(!deque.isEmpty() && nums[deque.getLast()] <= nums[i]){deque.removeLast();}deque.addLast(i);if(i >= k-1){res[i-k+1] = nums[deque.getFirst()];} }return res;}
}

复杂度分析

  时间复杂度:O(n),其中 n 是数组 nums 的长度。每一个下标恰好被放入队列一次,并且最多被弹出队列一次,因此时间复杂度为 O(n)。
  空间复杂度:O(n),即为双端队列的长度大小,用于存储每次比较的数据。


一键三连,让我的信心像气球一样膨胀!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3015084.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

ATA-2161高压放大器用途有哪些种类

高压放大器是一种电子设备&#xff0c;其主要功能是将输入信号放大到较高的电压水平&#xff0c;同时保持信号的形状和特性。这种设备在各种应用领域中都有重要作用&#xff0c;它的种类繁多&#xff0c;根据不同的用途可以分为多种类型。 1.医学领域 在医学设备中&#xff0c;…

当AI遇见现实:数智化时代的人类社会新图景

文章目录 一、数智化时代的机遇二、数智化时代的挑战三、如何适应数智化时代《图解数据智能》内容简介作者简介精彩书评目录精彩书摘强化学习什么是强化学习强化学习与监督学习的区别强化学习与无监督学习的区别 前言/序言 随着科技的日新月异&#xff0c;我们步入了一个前所未…

“A”分考试经验分享:云计算HCIE考试请注意这几点...

大家好&#xff0c;我是誉天云计算HCIE的王同学&#xff0c;于4月2日"A"分通过了云计算3.0 HCIE的认证考试。 首先感谢誉天教育对我的辅导&#xff0c;感谢苗苗老师和石老师对我的帮助&#xff0c;通过这次考试让我对华为云计算有了一定的了解。接下来我就与大家分享…

创意无限,批量剪辑技巧:视频剪辑中的画中画技巧大揭秘

在视频剪辑的世界里&#xff0c;创意是无限的&#xff0c;而技巧则是实现这些创意的关键。画中画技巧作为视频剪辑中的一种高级技术&#xff0c;可以带给观众新颖的视觉体验&#xff0c;提升视频的质量和观赏性。本文将深入探讨批量剪辑中的画中画技巧&#xff0c;揭示其背后的…

css--控制滚动条的显示位置

各种学习后的知识点整理归纳&#xff0c;非原创&#xff01; ① direction属性 滚动条在左侧显示② transform:scaleY() 滚动条在上侧显示 正常的滚动条会在内容超出规定的范围后在区域右侧和下侧显示在有些不正常的需求下会希望滚动条在上侧和左侧显示自己没有想到好的解决方案…

探索淘宝API接口对接(属性规格丨sku价格丨详情图丨优惠券等):打造智能电商解决方案

一、引言 随着电子商务的快速发展&#xff0c;越来越多的企业和开发者希望通过自动化和智能化的方式接入电商平台&#xff0c;以实现更高效的数据交互和业务流程。淘宝作为中国最大的电商平台之一&#xff0c;其提供的API接口成为了众多企业和开发者关注的焦点。本文将探讨淘宝…

竖线 竖杠 | before 伪类 文字前面的竖线跟文字对齐 只能用定位

<div class"sub-title">招租相关信息</div>.sub-title {font-size: 16px;text-align: left;color: #314790;font-weight: 700;position: relative;padding-left: 10px;margin-bottom: 20px; }.sub-title::before {content: "";background-colo…

LeetCode135:分发糖果

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回需…

基于GEE遥感影像处理和长时序土地分类以及生物量估算分析

简介 Google Earth Engine云平台是目前全球范围内测绘领域内使用最为广泛的遥感云计算平台&#xff0c;其凭借强大的数据存储和云计算能力&#xff0c;极大了提高了全球科研工作者的科研产出&#xff0c;每年借助GEE平台发布的各类期刊论文超1000篇&#xff0c;在海量遥感数据的…

mySQL (基础面试)实物四属性 ACID属性,以及开启事务

mySQL具备四个基本属性 原子性atomicity 事务是一个完整的操作&#xff0c;事务的各个步骤是不可分的&#xff08;原子的&#xff09;&#xff0c;要么执行要么不执行 一致性consistency 当事务完成时&#xff0c;数据处于一致状态 隔离性isolation 并发事物之间彼此隔离…

ComfyUI的图像调色处理

可知这个节点可以让一张图片根据另外一张图片进行调色&#xff0c;我上传其他图片再来看看效果&#xff0c;如下 【保姆级教程】ComfyUI中常见的十几种多图处理节点&#xff0c;包括图像填充、图像拼接、图像混合等等 工作流链接 更多好玩且实用AIGC工作流和节点 星球号&#…

SSM+Vue+Element-UI实现教资考前指导系统

前言介绍 对于本教资考前指导系统的设计来说&#xff0c;系统开发主要是采用java语言技术&#xff0c;在整个系统的设计中应用MySQL数据库来完成数据存储&#xff0c;具体根据教资考前指导系统的现状来进行开发的&#xff0c;具体根据现实的需求来实现四六级在线考试系统网络化…

深入解析:企业级OV SSL证书的技术价值与应用实践

JoySSL官网 注册码230918 在互联网安全日益受到重视的今天&#xff0c;SSL证书已成为保护网站数据传输安全的基石。其中&#xff0c;企业级OV&#xff08;Organization Validation&#xff09;SSL证书凭借其增强的安全特性和对企业身份的严格验证&#xff0c;在众多类型的SSL证…

省钱有道:优化河南乙级灌溉排涝资质晋升甲级的财务策略

省钱有道&#xff1a;优化河南乙级灌溉排涝资质晋升甲级的财务策略 一、引言 在河南乙级灌溉排涝企业晋升甲级资质的过程中&#xff0c;财务策略的优化对于降低成本、提高经济效益具有重要意义。以下是一些建议&#xff0c;旨在帮助企业实现晋升过程中的财务最优化。 二、费用…

Meltdown 以及Linux KPTI技术简介

文章目录 前言一、Introduction二、 Background2.1 Out-of-order execution2.2 Address Spaces2.3 Cache Attacks 三、A Toy Example四、Building Blocks of the Attack4.1 Executing Transient Instructions4.2 Building a Covert Channel 五、Meltdown5.1 Attack Description…

微信小程序03: 获取不限制的小程序二维码

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.1 上文小总结1.1.2 上文传送门 2. 获取不限制二维码操作2.1 准备工作2.1.1 请先复制00篇的统一封装代码2.1.2 修改配置文件中的参数 2.2 具体代码使用与注释如下2.2.1 业务代码如下2.2.2 代码解释(一)[无需复制]2.2.3 创建Base6…

网关设备是什么?-天拓四方

随着科技的飞速发展和网络的日益普及&#xff0c;我们的生活中充满了各种各样的网络设备和系统。这些设备和系统之间如何相互通信、交换数据呢&#xff1f;这就需要我们引入一个关键的概念——网关设备。本文将详细解释网关设备是什么&#xff0c;帮助广大读者更好地理解这一重…

OpenAI API搭建的智能家居助手;私密大型语言模型(LLM)聊天机器人;视频和音频文件的自动化识别和翻译工具

✨ 1: GPT Home 基于Raspberry Pi和OpenAI API搭建的智能家居助手 GPT Home是一个基于Raspberry Pi和OpenAI API搭建的智能家居助手&#xff0c;功能上类似于Google Nest Hub或Amazon Alexa。通过详细的设置指南和配件列表&#xff0c;用户可以自行组装和配置这个设备&#x…

CI/CD 上云为何如此重要

近年来&#xff0c;敏捷度和速度日渐成为产品开发的关键。市场高速运行&#xff0c;时间就是金钱&#xff0c;也是企业发展的关键。游戏、金融、自动化产业等软件开发企业更像卷入了一场无休止的时间竞赛。 这也难怪 DevOps 备受欢迎。企业借助 DevOps 不断加速优质软件的交付…

为什么SSL证书的有效期很短?

在当今互联网世界中&#xff0c;SSL证书作为保障网站数据传输安全的重要工具&#xff0c;其有效期往往被设定为相对较短的时间。对于许多非专业人士来说&#xff0c;可能会好奇&#xff1a;为什么SSL证书不能像其他证件一样拥有较长的有效期呢&#xff1f;今天&#xff0c;我们…