滑动窗口最大值-力扣

在做这道题时,首先想到的解法是使用队列来做,维护一个队列,每次保存滑动窗口大小的长度,并判断此时队列中的最大值,但这样做,在k的值较大时,出现了超时问题,代码如下:

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> result;queue<int> que;for(int i = 0; i < nums.size(); i++){que.push(nums[i]);while(que.size() == k){int maxNum = que.front();que.pop();que.push(maxNum);for(int flag = 0; flag < k - 1; flag++){int tmp = que.front();maxNum = max(maxNum, tmp);que.pop();que.push(tmp);}result.push_back(maxNum);que.pop();}}return result;}
};

使用deque双端队列来完成这道题,首先遍历前k个元素,将最大值的下标加入到队列中,如果新加入的下标对应的值大于队列前面下标对应的值,将其移除。这样保持这个队列维护的下标,对应的值时由大到小单调的。
之后每新插一个元素进来,继续维护这个单调的队列,然后判断队列最前的下标,是否还在滑动窗口内,如果不在,则移除。代码如下:

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> result;deque<int> dq;for(int i = 0; i < k; i++){while(!dq.empty() && nums[i] >= nums[dq.back()]){dq.pop_back();}dq.push_back(i);}result.push_back(nums[dq.front()]);for(int i = k; i < nums.size(); i++){while(!dq.empty() && nums[i] >= nums[dq.back()]){dq.pop_back();}dq.push_back(i);while(dq.front() <= i - k){dq.pop_front();}result.push_back(nums[dq.front()]);}return result;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32-15-DMA

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU STM32-14-FSMC_LCD 文章目录 STM…

[原创][Delphi多线程]TThreadedQueue的经典使用案例.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delph…

悉数六大设计原则

悉数六大设计原则 目录 悉数六大设计原则前言☕谁发明了设计模式设计原则设计原则与设计模式的关系 单一职责什么是单一职责不遵循单一职责原则的设计遵循单一职责原则的设计单一职责的优点示例代码&#xff1a; 里氏替换原则什么是里氏替换原则示例代码&#xff1a;违反里氏替…

解读信创产业根基,操作系统发展历程

信创产业根基之一操作系统 操作系统是一个关键的控制程序&#xff0c;负责协调、管理和控制计算机硬件和软件资源。作为硬件的首要软件扩展&#xff0c;它位于裸机与用户之间&#xff0c;充当了两者之间的桥梁。通过其核心程序&#xff0c;操作系统高效地管理着系统中的各类资源…

static修饰变量和函数

static修饰的变量和函数只能在定义它的cpp源文件中使用&#xff0c;如果在头文件中定义&#xff0c;则需要注意 在头文件中定义static变量和static函数&#xff1a; 变量 如果在头文件中定义了static变量&#xff0c;那么&#xff0c;所有包含这个头文件的源文件都会定义自己…

vm-bhyve虚拟机安装ubuntu22版本后进入grub无法启动

问题&#xff1a;安装ubuntu22版本后无法启动 安装好ubuntu22之后&#xff0c;重启进入了grub模式&#xff0c;没有自动启动ubuntu 网上查了一下&#xff0c;这算一个通病。 问题解决 在grub模式下输入boot命令&#xff1a; boot (lvm/ubuntu--vg-ubuntu--lv)/boot error: …

有哪些兼职软件一天能赚几十元?盘点十个能长期做下去的挣钱软件

在当今这个信息泛滥的时代&#xff0c;众人纷纷寻求迅速致富的捷径。许多人在从事兼职或副业时&#xff0c;并不期望取得巨大的成就&#xff0c;只要每天能额外收入数十元&#xff0c;便已心满意足。 今天&#xff0c;我将带领大家深入探究&#xff0c;揭开那些隐藏在日常生活…

【小海实习日记】Git使用规范

1.Git使用流程 1.1 从master分支拉一个分支&#xff0c;命名要符合规范且清晰。 1.2 commit到本地&#xff0c;push 到远端。 1.3 在Gitlab创建MR&#xff0c;选择develp分支。 1.4 如果要修改的话&#xff0c;先把Gitlab上的MR修改为Draft(修改态)&#xff0c;然后在本地修改代…

Dubbo中的Invoker与Exporter机制详解

Dubbo作为一款成熟的高性能、轻量级的Java RPC框架&#xff0c;其核心机制之一便是Invoker与Exporter机制&#xff0c;它们在服务提供端和服务消费端扮演着至关重要的角色&#xff0c;是实现服务调用和管理的基础。下面将详细解析这两个核心组件的工作原理及其在Dubbo框架中的作…

9.1.1 简述目标检测领域中的单阶段模型和两阶段模型的性能差异及其原因

9.1目标检测 场景描述 目标检测&#xff08;Object Detection&#xff09;任务是计算机视觉中极为重要的基础问题&#xff0c;也是解决实例分割&#xff08;Instance Segmentation&#xff09;、场景理解&#xff08;Scene Understanding&#xff09;、目标跟踪&#xff08;Ob…

详解 Spark SQL 代码开发之用户自定义函数

一、UDF 一进一出函数 /**语法&#xff1a;SparkSession.udf.register(func_name: String, op: T > K) */ object TestSparkSqlUdf {def main(args: Array[String]): Unit {// 创建 sparksql 环境对象val conf new SparkConf().setMaster("local[*]").setAppNam…

subline text3安装numpy,scipy,matplotlib,pandas,sklearn,ipynb

1&#xff0c;numpy&#xff08;基础数值算法&#xff09; 安装&#xff0c;要是在cmd直接安装到最后会报错, import numpy as np ModuleNotFoundError: No module named numpy 直接进入python环境&#xff0c;输入python -m pip install numpy就不会报错…

【SringBoot项目中MyBatis-Plus多数据源应用实践】

文章目录 前言 一、Mybatis-Plus是什么&#xff1f; 二、多数据源是什么&#xff1f; 三、使用步骤 1. 新建一个SpringBoot项目 2. 引入必要的MyBatis架包 3. 新建两个数据库及两张表 3.3.1 新建数据库&#xff1a;DB_A&#xff0c;并创建一张数据表alarm_kind&#xff0c;以及…

云端数据提取:安全、高效地利用无限资源

在当今的大数据时代&#xff0c;企业和组织越来越依赖于云平台存储和处理海量数据。然而&#xff0c;随着数据的指数级增长&#xff0c;数据的安全性和高效的数据处理成为了企业最为关心的议题之一。本文将探讨云端数据安全的重要性&#xff0c;并提出一套既高效又安全的数据提…

浅测 长亭雷池 WAF “动态防护”

本文首发于 Anyeの小站 前言 雷池 WAF 社区版的更新速度是真快啊&#xff0c;几乎一周一个小版本&#xff0c;俩月一个大版本&#xff0c;攻城狮们真的狠啊&#xff0c;没法测了。 废话不多说&#xff0c;前两天看到了 这篇文章&#xff0c;对雷池的“动态防护”功能挺感兴趣…

Android应用的基本构造及威胁(apk)

目录 APK文件是什么 apk文件解压后的目录结构 apk文件的存储位置

去掉el-table表头右侧类名是gutter,width=17px的空白区域(包括表头样式及表格奇偶行样式和表格自动滚动)

代码如下&#xff1a; <el-table:data"tableData"ref"scroll_Table":header-cell-style"getRowClass":cell-style"styleBack"height"350px"style"width: 100%"><el-table-column prop"id" l…

Scrum团队在迭代中如何处理计划外的工作

认为 Scrum 团队不做计划其实是一个误区&#xff0c;实际上很多 Scrum 团队在冲刺计划会议以及在细化工作项时均会进行详细规划。此外&#xff0c;他们还会创建一个路线图&#xff0c;以便显示他们在多个冲刺中的计划。 Scrum 团队需要经常进行计划&#xff0c;以便在不断变化…

linux学习:进程

目录 例子1 获取当前进程的进程标识符 例子2 创建一个新的子进程 例子3 展示了父进程和子进程的进程标识符 例子4 区分父进程和子进程 例子5 区分父进程和子进程的行为 例子6 比较进程标识符来区分父进程和子进程 例子7 子进程如何修改一个变量&…

混合动力电动汽车介绍(二)

接续前一章内容&#xff0c;本篇文章介绍混合动力汽车串联、并联和混联的系统组成和工作原理。 一、串联混合动力电动汽车的系统组成和工作原理 上图为串联混合动力电动汽车的结构简图。汽车由电动机-发电机驱动行驶&#xff0c;电机控制器的动力来自油箱-发动机-发电机-发电机…