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

1438 绝对差不超过限制的最长连续子数组(单调队列)

题目

绝对差不超过限制的最长连续子数组

给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。

如果不存在满足条件的子数组,则返回 0 。

示例 1:

输入:nums = [8,2,4,7], limit = 4
输出:2 
解释:所有子数组如下:
[8] 最大绝对差 |8-8| = 0 <= 4.
[8,2] 最大绝对差 |8-2| = 6 > 4. 
[8,2,4] 最大绝对差 |8-2| = 6 > 4.
[8,2,4,7] 最大绝对差 |8-2| = 6 > 4.
[2] 最大绝对差 |2-2| = 0 <= 4.
[2,4] 最大绝对差 |2-4| = 2 <= 4.
[2,4,7] 最大绝对差 |2-7| = 5 > 4.
[4] 最大绝对差 |4-4| = 0 <= 4.
[4,7] 最大绝对差 |4-7| = 3 <= 4.
[7] 最大绝对差 |7-7| = 0 <= 4. 
因此,满足题意的最长子数组的长度为 2 。

示例 2:

输入:nums = [10,1,2,4,7,2], limit = 5
输出:4 
解释:满足题意的最长子数组是 [2,4,7,2],其最大绝对差 |2-7| = 5 <= 5 。

示例 3:

输入:nums = [4,2,2,2,4,4,2,2], limit = 0
输出:3

提示:

  • 1 <= nums.length <= 10^5
  • 1 <= nums[i] <= 10^9
  • 0 <= limit <= 10^9

题解

与滑动窗口最大值类似,维护一个max队列保证队首为最大值,维护一个min队列保证队首为最小值,枚举right更新答案

class Solution {public int longestSubarray(int[] nums, int limit) {//利用两个双端队列,max从左到右单调递增,队首为最大值,min相反Deque<Integer> maxdeque = new ArrayDeque<>();Deque<Integer> mindeque = new ArrayDeque<>();int n = nums.length;int right = 0, left = 0, ans = 0;//枚举rightwhile (right < n) {while (!maxdeque.isEmpty() && nums[right] > maxdeque.peekLast()) {maxdeque.removeLast();}while (!mindeque.isEmpty() && nums[right] < mindeque.peekLast()) {mindeque.removeLast();}maxdeque.addLast(nums[right]);mindeque.addLast(nums[right]);//移动leftwhile (maxdeque.peekFirst() - mindeque.peekFirst() > limit) {//更新对内元素if (maxdeque.peekFirst() == nums[left]) {maxdeque.removeFirst();}if (mindeque.peekFirst() == nums[left]) {mindeque.removeFirst();}left++;}ans = Math.max(ans, right - left + 1);right++;}return ans;}
}

相关文章:

1438 绝对差不超过限制的最长连续子数组(单调队列)

题目 绝对差不超过限制的最长连续子数组 给你一个整数数组 nums &#xff0c;和一个表示限制的整数 limit&#xff0c;请你返回最长连续子数组的长度&#xff0c;该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组&#xff0c;则返…...

OpenCV入门9:图像增强和图像滤波

图像增强是一种通过对图像进行处理以改善其质量、对比度、清晰度等方面的技术。在OpenCV中&#xff0c;有多种图像增强的方法和函数可用。下面简要介绍一些常见的图像增强方法及其在OpenCV中的实现方式。 直方图均衡化&#xff08;Histogram Equalization&#xff09;&#xff…...

Pycharm常用快捷键和替换正则表达式

原生快捷键的使用&#xff1a; 1.CtrlF&#xff1a;查找 2.CtrlZ&#xff1a;返回上一步 3.Alt 鼠标左键选择&#xff1a;多行同时编辑&#xff08;上、下、左、右键能够移动光标&#xff09; 按住Ctrl,左键点击&#xff0c;定位光标 编辑过程 URL常用的替换正则表达式&am…...

C#,数值计算——函数计算,Epsalg的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Convergence acceleration of a sequence by the algorithm.Initialize by /// calling the constructor with arguments nmax, an upper bound on the /// number of term…...

Delphi 12 重返雅典 (RAD Studio 12)

RAD Studio 12 的新功能&#xff1a; 以最新的平台版本为目标&#xff01; RAD Studio 12 提供对 iOS 17&#xff08;仅适用于 Delphi&#xff09;、Android 14 和 macOS Sonoma 的官方支持。RAD Studio 12 还支持 Ubuntu 22 LTS 和 Windows Server 2022。 Delphi 源代码的多…...

手写链表C++

目录 一、链表基本概念以及注意事项 1.1 构造函数与析构函数 1.2 插入元素 1.3 重载运算符 二、小结 一、链表基本概念以及注意事项 在工作中&#xff0c;链表是一种常见的数据结构&#xff0c;可以用于解决很多实际问题。在学习中&#xff0c;掌握链表可以提高编程能力和…...

为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?

​ 为什么我是机器视觉调机仔&#xff0c;为什么一定要学一门高级语言编程&#xff0c;以后好不好就业&#xff0c;待遇高不高&#xff0c;都是跟这项技术没关系&#xff0c;是跟这个技术背后的行业发展有关系。 你可以选择离机器视觉行业&#xff0c;也可以选择与高级语言相关…...

MongoDB单实例安装(Linux)

实战环境 centos7系统、64位 iptables和selinux关闭 mongodb简介 mongodb是个非关系型数据库&#xff0c;但操作跟关系型数据最类似。mysql是关系型数据库 mongodb是面向文档存储的非关系型数据库&#xff0c;数据以json的格式进行存储 mongodb可用来永久存储&#xff0c;也可用…...

各种业务场景调用API代理的API接口教程(附带电商平台api接口商品详情数据接入示例)

API代理的API接口在各种业务场景中具有广泛的应用&#xff0c;本文将介绍哪些业务场景可以使用API代理的API接口&#xff0c;并提供详细的调用教程和代码演示&#xff0c;同时&#xff0c;我们还将讨论在不同场景下使用API代理的API接口所带来的好处。 哪些业务场景可以使用API…...

React-hooks有哪些 包括用法是什么?

React Hooks是React 16.8版本引入的功能&#xff0c;它允许你在函数组件中使用状态&#xff08;state&#xff09;和其他React特性&#xff0c;而无需编写类组件。以下是一些常用的React Hooks及其用法&#xff1a; 1&#xff1a;useState&#xff1a;用于在函数组件中添加状态…...

根据DataFrame指定的列该列中如果有n个不同元素则将其转化为n行显示explode()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 根据DataFrame指定的列 该列中如果有n个不同元素 则将其转化为n行显示 explode() 选择题 以下代码两次输出结果分别为几行&#xff1f; import pandas as pd df pd.DataFrame({种类:[蔬菜,水…...

《持续交付:发布可靠软件的系统方法》- 读书笔记(十三)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;十三&#xff09; 第 13 章 组件和依赖管理13.1 引言13.2 保持应用程序可发布13.2.1 将新功能隐蔽起来&#xff0c;直到它完成为止13.2.2 所有修改都是增量式的13.2.3 通过抽象来模拟分支 13.3 依赖13.3.1 依赖地狱13.3…...

【Copilot】登录报错 Extension activation failed: “No auth flow succeeded.“(VSCode)

问题描述 Visual Studio Code 登录 GitHub Copilot 插件报错。 在浏览器中成功授权 GitHub 账户&#xff0c;返回 VSCode 后仍然报错。 [ERROR] [default] [2023-11-06T12:34:56.185Z] Extension activation failed: "No auth flow succeeded."原因分析 网络环境问…...

uboot - 驱动开发 - dw watchdog

说明 公司SOC使用的watchdog模块是新思&#xff08;Synopsys&#xff09;的IP。 需求 用户有时会在uboot/kernel中做些开发&#xff0c;新增一些功能&#xff08;OTA升级等&#xff09;&#xff0c;可能会出现uboot/kernel启动崩溃甚至设备死机等问题&#xff0c;需要在uboo…...

【系统架构设计】架构核心知识: 2.5 软件测试、系统转换计划、系统维护

目录 一 软件测试 1 静态测试 2 动态测试 3 测试 4 集成测试的策略 二...

EXPLAIN详解(MySQL)

EXPLAIN概述 EXPLAIN语句提供MySQL如何执行语句的信息。EXPLAIN与SELECT, DELETE, INSERT, REPLACE和UPDATE语句一起工作。 EXPLAIN返回SELECT语句中使用的每个表的一行信息。它按照MySQL在处理语句时读取表的顺序列出了输出中的表。MySQL使用嵌套循环连接方法解析所有连接。…...

[PyTorch][chapter 61][强化学习-免模型学习 off-policy]

前言&#xff1a; 蒙特卡罗的学习基本流程&#xff1a; Policy Evaluation : 生成动作-状态轨迹,完成价值函数的估计。 Policy Improvement: 通过价值函数估计来优化policy。 同策略&#xff08;one-policy&#xff09;&#xff1a;产生 采样轨迹的策略 和要改…...

【服务器学习】 iomanager IO协程调度模块

iomanager IO协程调度模块 以下是从sylar服务器中学的&#xff0c;对其的复习&#xff1b; 参考资料 继承自协程调度器&#xff0c;封装了epoll&#xff0c;支持为socket fd注册读写事件回调函数 IO协程调度还解决了调度器在idle状态下忙等待导致CPU占用率高的问题。IO协程调…...

前端设计模式之【迭代器模式】

文章目录 前言介绍实现接口优缺点应用场景后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端设计模式 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&a…...

Linux-用户与用户组,权限

1.用户组管理&#xff08;以下命令需root用户执行&#xff09; ①创建用户组 groupadd 用户组名 ②删除用户组 groupdel 用户组名 2.用户管理&#xff08;以下命令需root用户执行&#xff09; ①创建用户 useradd [-g -d] 用户名 >-g&#xff1a;指定用户的组&#xff0c;不…...

手把手教你用命令行搞定ESXi主机维护模式失败(附排查清单)

命令行实战&#xff1a;ESXi主机维护模式失败排查全指南 引言 在虚拟化环境中&#xff0c;ESXi主机的维护模式是系统管理员进行硬件更换、软件升级或故障排查时的关键操作。然而&#xff0c;当虚拟机状态异常或DRS功能关闭时&#xff0c;主机可能拒绝进入维护模式&#xff0c;此…...

Dify客户端AOT部署全链路拆解,从Program.cs到aotprofile.json再到strip符号表优化,一步不漏!

第一章&#xff1a;Dify客户端AOT部署全景概览与核心价值认知AOT&#xff08;Ahead-of-Time&#xff09;部署模式为 Dify 客户端带来了显著的性能跃升与运行时确定性保障。不同于传统 JIT&#xff08;Just-in-Time&#xff09;方式在运行时动态编译&#xff0c;AOT 将前端资源、…...

嵌入式开发者的Git避坑指南:如何优雅地管理Keil μVision5工程?

嵌入式开发者的Git避坑指南&#xff1a;如何优雅地管理Keil μVision5工程&#xff1f; 在嵌入式开发领域&#xff0c;版本控制是团队协作和项目管理的基石。然而&#xff0c;Keil μVision5工程的特殊性常常让开发者陷入Git使用的误区——要么仓库体积膨胀到难以维护&#xff…...

单片机P2口驱动LED的两种接法详解:“拉电流”与“灌电流”,你用对了吗?

单片机P2口驱动LED的两种接法详解&#xff1a;“拉电流”与“灌电流”&#xff0c;你用对了吗&#xff1f; 在单片机开发中&#xff0c;驱动LED是最基础却最容易忽视细节的环节。很多教程只教一种连接方法&#xff0c;但实际项目中&#xff0c;根据LED亮度需求、功耗限制和单片…...

一台电脑变游戏派对:Nucleus Co-Op让你和好友共享屏幕乐趣

一台电脑变游戏派对&#xff1a;Nucleus Co-Op让你和好友共享屏幕乐趣 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾梦想过和朋友一起坐…...

nnUNet v2迁移指南:从v1老手到v2新版本,我的踩坑与避坑实录

nnUNet v2迁移指南&#xff1a;从v1老手到v2新版本&#xff0c;我的踩坑与避坑实录 医学影像分割领域的技术迭代总是悄然而至。当nnUNet v2带着更高效的训练流程和更简洁的API出现在GitHub趋势榜时&#xff0c;作为长期使用v1版本的研究者&#xff0c;我在升级过程中经历了从兴…...

zmq源码分析之mailbox_t

文章目录 概述 核心结构 核心成员及其作用 公开接口 1. 构造函数 2. 获取文件描述符 3. 发送命令 4. 接收命令 工作原理 命令传递流程 状态转换 技术特点 1. 线程安全设计 2. 高效的事件通知 3. 跨平台支持 4. Fork 安全 与其他组件的关系 使用场景 性能优化点 技术细节 1. 命令…...

BabelDOC:打破PDF翻译格式壁垒的智能文档处理引擎

BabelDOC&#xff1a;打破PDF翻译格式壁垒的智能文档处理引擎 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC 在全球化协作与知识共享的浪潮中&#xff0c;PDF文档的跨语言翻译一直是个技术难题…...

go-zero中间件链与错误处理机制

go-zero中间件链与错误处理机制 一、中间件在 go-zero 中的定位 1.1 什么是中间件链 中间件&#xff08;Middleware&#xff09;是一种在请求到达业务逻辑之前、或响应返回客户端之前&#xff0c;执行横切关注点的机制。在 go-zero 中&#xff0c;中间件以「洋葱模型」组织&…...

嵌入式开发选型指南:Cortex-M3/M4项目中,ARM、Thumb、Thumb-2指令集到底该怎么选?

Cortex-M3/M4指令集选型实战&#xff1a;从编译选项到性能调优 当你用Keil或IAR新建一个STM32工程时&#xff0c;编译器选项里那个小小的"-mthumb"参数背后&#xff0c;藏着影响整个项目性能的秘密。去年我们团队在开发工业级电机控制器时&#xff0c;就因为一个指令…...