LeetCode 3355.零数组变换 I:差分数组
【LetMeFly】3355.零数组变换 I:差分数组
力扣题目链接:https://leetcode.cn/problems/zero-array-transformation-i/
给定一个长度为 n
的整数数组 nums
和一个二维数组 queries
,其中 queries[i] = [li, ri]
。
对于每个查询 queries[i]
:
- 在
nums
的下标范围[li, ri]
内选择一个下标 子集。 - 将选中的每个下标对应的元素值减 1。
零数组 是指所有元素都等于 0 的数组。
如果在按顺序处理所有查询后,可以将 nums
转换为 零数组 ,则返回 true
,否则返回 false
。
示例 1:
输入: nums = [1,0,1], queries = [[0,2]]
输出: true
解释:
- 对于 i = 0:
<ul><li>选择下标子集 <code>[0, 2]</code> 并将这些下标处的值减 1。</li><li>数组将变为 <code>[0, 0, 0]</code>,这是一个零数组。</li> </ul> </li>
示例 2:
输入: nums = [4,3,2,1], queries = [[1,3],[0,2]]
输出: false
解释:
- 对于 i = 0:
<ul><li>选择下标子集 <code>[1, 2, 3]</code> 并将这些下标处的值减 1。</li><li>数组将变为 <code>[4, 2, 1, 0]</code>。</li> </ul> </li> <li><strong>对于 i = 1:</strong> <ul><li>选择下标子集 <code>[0, 1, 2]</code> 并将这些下标处的值减 1。</li><li>数组将变为 <code>[3, 1, 0, 0]</code>,这不是一个零数组。</li> </ul> </li>
提示:
1 <= nums.length <= 105
0 <= nums[i] <= 105
1 <= queries.length <= 105
queries[i].length == 2
0 <= li <= ri < nums.length
解题方法:差分数组
创建一个 o p op op数组,假设某个query是从 0 0 0到 3 3 3,那么就将 o p [ 0 ] op[0] op[0]到 o p [ 3 ] op[3] op[3]都加一(代表下标 0 0 0到 3 3 3都可以被操作一次),其中 o p [ i ] op[i] op[i]代表 n u m s [ i ] nums[i] nums[i]一共被操作多少次。
创建一个 d i f f diff diff数组,其中 d i f f [ i ] diff[i] diff[i]代表数组 o p [ i ] − o p [ i − 1 ] op[i]-op[i-1] op[i]−op[i−1]的差值。
假设想让 o p [ l ] op[l] op[l]到 o p [ r ] op[r] op[r]都加一,那么其实只需要 d i f f [ l ] diff[l] diff[l]加一 d i f f [ r + 1 ] diff[r + 1] diff[r+1]减一, o p op op数组直接扔了都行。
执行完所有操作(更新好diff数组)后, ∑ 0 i d i f f [ i ] \sum_0^i diff[i] ∑0idiff[i]即为 o p [ i ] op[i] op[i]的值。
如果存在任何一个 i i i的 n u m s [ i ] > o p [ i ] nums[i]\gt op[i] nums[i]>op[i],就说明 n u m s [ i ] nums[i] nums[i]无法减为 0 0 0,返回false
。
- 时间复杂度 O ( l e n ( q u e r i e s ) + l e n ( n u m s ) ) O(len(queries)+len(nums)) O(len(queries)+len(nums))
- 空间复杂度 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums))
AC代码
C++
/** @Author: LetMeFly* @Date: 2025-05-21 23:06:35* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-05-21 23:14:28*/
class Solution {
public:bool isZeroArray(vector<int>& nums, vector<vector<int>>& queries) {vector<int> diff(nums.size() + 1);for (vector<int>& q : queries) {diff[q[0]]++;diff[q[1] + 1]--;}int cnt = 0;for (int i = 0; i < nums.size(); i++) {cnt += diff[i];if (nums[i] > cnt) {return false;}}return true;}
};
Python
'''
Author: LetMeFly
Date: 2025-05-21 23:06:35
LastEditors: LetMeFly.xyz
LastEditTime: 2025-05-21 23:19:48
'''
from typing import Listclass Solution:def isZeroArray(self, nums: List[int], queries: List[List[int]]) -> bool:diff = [0] * (len(nums) + 1)for l, r in queries:diff[l] += 1diff[r + 1] -= 1cnt = 0for i in range(len(nums)):cnt += diff[i]if nums[i] > cnt:return Falsereturn True
Java
/** @Author: LetMeFly* @Date: 2025-05-21 23:06:35* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-05-21 23:20:50*/
class Solution {public boolean isZeroArray(int[] nums, int[][] queries) {int[] diff = new int[nums.length + 1];for (int[] q : queries) {diff[q[0]]++;diff[q[1] + 1]--;}int cnt = 0;for (int i = 0; i < nums.length; i++) {cnt += diff[i];if (nums[i] > cnt) {return false;}}return true;}
}
Go
/** @Author: LetMeFly* @Date: 2025-05-21 23:06:35* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-05-21 23:23:00*/
package mainfunc isZeroArray(nums []int, queries [][]int) bool {diff := make([]int, len(nums) + 1)for _, q := range queries {diff[q[0]]++diff[q[1] + 1]--}cnt := 0for i := 0; i < len(nums); i++ {cnt += diff[i]if nums[i] > cnt {return false}}return true
}
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源
相关文章:
LeetCode 3355.零数组变换 I:差分数组
【LetMeFly】3355.零数组变换 I:差分数组 力扣题目链接:https://leetcode.cn/problems/zero-array-transformation-i/ 给定一个长度为 n 的整数数组 nums 和一个二维数组 queries,其中 queries[i] [li, ri]。 对于每个查询 queries[i]&am…...
java21
1.数据结构之二叉树,二叉查找树,平衡二叉树 原理:和节点比较大小然后选左边还是右边 注意:中序遍历最常见,因为遍历的结果是从小到大 注意是任意节点,上面的二叉查找树的节点10的左子树高度是0,…...
ES的倒排索引和正排索引的区别及适用场景?为什么倒排索引适合全文搜索?
正排索引解析 1.存储机制 Elasticsearch 的文档存储机制比简单的固定字节分配更复杂,其核心原理如下: 1. 数值类型存储机制 对于 long/float/double 等数值类型: 文档ID2 → 偏移量 2 * sizeof(type) 例如:long 类型…...
ElasticSearch各种查询语法示例
1. 每种查询语法的区别与优缺点 Query DSL 区别: JSON 格式的结构化查询,功能强大,支持复杂查询逻辑,适用于 Elasticsearch 的核心查询场景。优点: 灵活,功能全面,支持全文搜索、精确匹配、聚合等;可组合…...
Ubuntu20.04部署KVM
文章目录 一. 环境准备关闭防火墙(UFW)禁用 SELinux更换镜像源检查 CPU 虚拟化支持 二. 安装KVM安装 KVM 及相关组件启动 libvirtd 服务验证安装创建虚拟机 一. 环境准备 4C8G,50G硬盘——VMware Workstation需要给虚拟机开启虚拟化引擎 roo…...
Android车载应用开发:Kotlin与Automotive OS深度实践
一、Android Automotive OS简介 Android Automotive OS(AAOS)是Google为车辆定制的操作系统,直接运行于车机硬件,提供完整的车载信息娱乐系统(IVI)。与Android Auto(手机投影方案)不…...
提示词工程(Prompt Engineering)是智能Agent交互中不可或缺的一环
Prompt Engineering 提示词,参考OpenAI提示词建议 2.5.1 概述 提示词工程(Prompt Engineering)是智能Agent交互中不可或缺的一环,它们指导智能体如何理解和回应用户的需求。这一节将探讨如何设计有效的提示词,以及如何通过精确的语言引导智能…...
九天画芯CEO张锦:AR 与 AI 融合重构智能终端生态,消费级市场迎来关键拐点
一、AR设备逆势突围:从技术验证到规模商用的跨越 根据洛图科技显示,2025 年 Q1 中国 XR(ARVR) 设备市场数据显示,AR 设备以 9.1 万台销量、116% 的同比增速远超 VR/MR 设备,这标志着消费级 AR 市场正式从 “…...
Python爬虫(32)Python爬虫高阶:动态页面处理与Scrapy+Selenium+BeautifulSoup分布式架构深度解析实战
目录 引言一、动态页面爬取的技术背景1.1 动态页面的核心特征1.2 传统爬虫的局限性 二、技术选型与架构设计2.1 核心组件分析2.2 架构设计思路1. 分层处理2. 数据流 三、代码实现与关键技术3.1 Selenium与Scrapy的中间件集成3.2 BeautifulSoup与Scrapy Item的整合3.3 分布式爬取…...
[案例七] NX二次开发标识特征的导入与布尔运算
本来做的是案例六NX二次开发减重块。但是当时在处理导入指定面时发现坐标转化存在很大问题,开了我很长时间,太难受了,决定放一放,昨天做了第六个案例采取了一种补救方法(实在不会的一种解决思路),个人认为NX这么优秀的软件应该有更好的方法,坐标转化真让人头大。刚开始…...
Canvas进阶篇:鼠标交互动画
Canvas进阶篇:鼠标交互动画 前言获取鼠标坐标鼠标事件点击事件监听代码示例效果预览 拖动事件监听代码示例效果预览 结语 前言 在上一篇文章Canvas进阶篇:基本动画详解 中,我们讲述了在Canvas中实现动画的基本步骤和动画的绘制方法。本文将进…...
Axure项目实战:智慧运输平台后台管理端-订单管理2(多级交互)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:订单管理2 主要内容:中继器筛选、表单跟随菜单拖动、审批数据互通等 应用场景:订单管理…...
AG-UI:重构AI代理与前端交互的下一代协议标准
目录 技术演进背景与核心价值协议架构与技术原理深度解析核心功能与标准化事件体系典型应用场景与实战案例开发者生态与集成指南行业影响与未来展望1. 技术演进背景与核心价值 1.1 AI交互的三大痛点 当前AI应用生态面临三大核心挑战: 交互碎片化:LangGraph、CrewAI等框架各…...
鸿蒙版Flutter库torch_light手电筒功能深度适配
鸿蒙版Flutter库torch_light手电筒功能深度适配:跨平台开发者的光明之路 本项目作者:kirk/坚果 适配仓库地址 作者仓库:https://github.com/svprdga/torch_light# 在数字化浪潮的推动下,跨平台开发框架如 Flutter 凭借其高效、…...
【JAVA】中文我该怎么排序?
📘 Java 中文排序教学文档(基于 Collator) 🧠 目录 概述Java 中字符串排序的默认行为为什么需要 Collator使用 Collator 进行中文排序升序 vs 降序排序自定义对象字段排序多字段排序示例总结对比表附录:完整代码示例 …...
WPF MVVM Community Toolkit. Mvvm 社区框架
Community Toolkit. Mvvm 社区框架 微软官方文档 主要内容:CommunityToolkit.Mvvm 框架 概念,安装,使用(重要API:ObservableObject,RelayCommand)源生成器([ObservableProperty]&…...
云原生安全之PaaS:从基础到实践的技术指南
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 云原生安全之PaaS:从基础到实践的技术指南 一、基础概念 PaaS(Platform as a Service)平台 PaaS是一种云计算服务模型,为开发者提供应用程序的开发、部署和运行环境,涵…...
软件设计师考试需背诵知识点
1. 网络技术标准与协议 2. OSI/RM七层模型 3. 对称加密算法 4. 常见的非对称加密算法 5. 排序算法比较 6. 海明码公式 设数据位是n位,校验位是k位,则n与k必须满足以下关系: 7. McCabe度量法 McCabe度量法的核心公式为: V(G)E−…...
智慧社区新防线:华奥系AI技术如何让夏季安防“零隐患”
夏季社区安防隐患频发 随着夏季高温、暴雨、台风等极端天气增多,社区安全风险显著上升。高空建筑外墙材料因暴晒脱落、地下管道锈蚀堵塞导致积水、电动车充电自燃等事件频发,传统“人防物防”模式响应滞后、管理粗放,难以满足精细化防控需求…...
pinia的简单使用
yarn add pinia // 用来存储token,用户信息,等需要多地方使用的信息 src目录下新建store文件夹->新建index.ts import { createPinia } from "pinia";const store createPinia()export default storemain.ts 引用store import { createApp } from v…...
【Linux笔记】——线程池项目与线程安全单例模式
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹: 【Linux笔记】——简单实习一个日志项目 🔖流水不争,争的是滔滔不息 一、线程池设计二…...
用户有一个Django模型没有设置主键,现在需要设置主键。
用户有一个Django模型没有设置主键,现在需要设置主键。 from django.db import modelsclass CategoryAssistentModel(models.Model):second_level_category models.CharField(max_length100, nullTrue, blankTrue)third_level_category models.CharField(max_len…...
SkyWalking 报错:sw_profile_task 索引缺失问题分析与解决
文章目录 SkyWalking 报错:sw_profile_task 索引缺失问题分析与解决问题背景SkyWalking 是否会自动创建 sw_profile_task 索引?答案:不会在初始化时创建相关索引包括: 问题原因分析解决方案✅ 解决思路:手动创建 sw_pr…...
多模态学习笔记
在模态对齐任务中,同一时刻不同类型的数据(模态)需要做好对齐,才能更好的感知内容,下面对其常见的多模态对齐任务进行如下总结: (1)文本图像 图像和文本特征提取后的对齐方法主要分为两类:基于对比学习的方法和基于跨模态注意力的方法。以下是它们的细化说明及具体实…...
【 Redis | 实战篇 扩展 】
目录 前言: 1.达人探店功能 1.1.点赞功能 1.2.排行榜 2.关注 2.1.共同关注 2.2.关注推送 3.附近商铺 3.1.GEO基本用法 3.2.获取附近商铺 4.签到 4.1.BitMap 4.2.实现签到 4.3.统计连续签到 5.UV统计 前言: 实现达人探店,好友…...
【HarmonyOS Next之旅】DevEco Studio使用指南(二十五) -> 端云一体化开发 -> 业务介绍(二)
目录 1 -> 工作原理 2 -> 约束与限制 2.1 -> 支持的设备 2.2 -> 支持的国家/地区 2.3 -> 支持的签名方式 3 -> 总结 3.1 -> 关键功能与工具 3.2 -> 开发流程 3.3 -> 典型场景与优化 3.4 -> 常见问题与解决 3.5 -> 总结 1 -> 工…...
空调系统虚拟标定技术:新能源汽车能效优化的革命性突破
title: 空调系统虚拟标定技术:新能源汽车能效优化的革命性突破 date: 2025-05-15 categories: 新能源汽车技术 tags: [空调系统, 虚拟标定, PID控制, 数字孪生, 能效优化] description: 本文深度解析空调系统虚拟标定技术在新能源汽车中的应用,揭秘如何…...
MCP Server开发并使用自定义天气查询工具查询城市天气
1.本地安装node.js环境 2.本地创建mcp文件夹,搭建mcp环境 在文件夹下cmd执行npm init -y初始化npm项目 3.创建weather-server.js文件,代码如下 // weather-server.js import { McpServer } from "modelcontextprotocol/sdk/server/mcp.js"…...
virtualbox选项“启用套嵌vt-x/amd-v“不可用
“启用套嵌vt-x/amd-v”选项不可用。 解决方法: 切换到virtualbox安装目录,执行如下命令查看虚拟机名称: .\VBoxManage.exe list vms比如返回: winxp 执行如下命令开启64位,注意把"winxp"换成你的虚拟机名字&#x…...
windows powershell 判断 进程号是否存在
在 Windows PowerShell 中,你可以使用多种方法来检查一个特定的进程号(PID)是否存在。以下是几种常用的方法: 方法1:使用 Get-Process 命令 你可以尝试获取具有特定 PID 的进程。如果该进程存在,Get-Proce…...
JAVA SE 多线程(下)
文章目录 📕1. 常见的锁策略✏️1.1 乐观锁VS悲观锁✏️1.2 轻量级锁VS重量级锁✏️1.3 自旋锁✏️1.4 公平锁VS非公平锁✏️1.5 可重入锁和不可重入锁✏️1.6 读写锁 📕2. 死锁✏️2.1 哲学家就餐问题✏️2.2 形成死锁的必要条件✏️2.3 如何避免死锁 &…...
DeepSeek+Dify之九多模态大模型识别图片
Dify之八添加各种在线大模型 文章目录 背景整体流程测试数据用到的节点开始列表操作LLM结束实现步骤1、新建工作流2、开始节点3、列表操作4、LLM节点(多模态大模型检索)5、结束节点测试发布导出背景 有了上一篇文章的基础,现在可以了解下多模态大模型识别图片的工作流 整体…...
软件工程(七):MQTT协议
概念 特性描述协议类型应用层协议(基于 TCP/IP)通信模式发布/订阅(Publish/Subscribe)网络开销小报文头仅 2 字节起,非常轻量保持长连接使用 Keep Alive 机制,适合持续连接的设备面向物联网广泛用于智能家…...
网络 :网络基础【网络框架认识】
网络 :网络基础【对网络的认识】 (一)网络发展(二)协议1、协议是什么?2、协议分层3、OSI七层模型4、TCP/IP五层(或四层)模型5、系统与网络的关系6、总结 (三)网络传输流程1、网络传输…...
Kotlin 极简小抄 P8(不可空类型、可空类型、注意事项、非空断言 !!)
Kotlin 概述 Kotlin 由 JetBrains 开发,是一种在 JVM(Java 虚拟机)上运行的静态类型编程语言 Kotlin 旨在提高开发者的编码效率和安全性,同时保持与 Java 的高度互操作性 Kotlin 是 Android 应用开发的首选语言,也可…...
几种超声波芯片的特点和对比
一 CX20106A ZIP - 8 CX20106A ZIP - 8 的核心竞争力在于高性价比、易用性和抗光干扰能力,尤其适合消费电子、短距离工业检测和低成本物联网场景。尽管在距离和精度上不及高端芯片,但其成熟的电路方案和广泛的市场应用(如经典红外遥控升级为超…...
软考 系统架构设计师系列知识点之杂项集萃(66)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(65) 第106题 一般说来,SoC称为系统级芯片,也称片上系统,它是一个有专用目标的集成电路产品。以下关于SoC不正确的说法是()。…...
Linux云计算训练营笔记day13[CentOS 7 find、vim、vimdiff、ping、wget、curl、RPM、YUM]]
Linux云计算训练营笔记day13[CentOS 7 find、vim、vimdiff、ping、wget、curl、RPM、YUM]] 目录 Linux云计算训练营笔记day13[CentOS 7 find、vim、vimdiff、ping、wget、curl、RPM、YUM]]1.find练习2.vim高级使用2.1 命令模式:2.2 插入模式:2.3 末行模式: 3. vimdiff4. ping5.…...
年会招标抽奖活动软件———仙盟创梦IDE
年会是企业一年的总结与欢庆时刻,而抽奖环节更是点燃全场气氛的关键。如何让抽奖环节既大气又充满仪式感?选对抽奖软件至关重要!本文精心挑选了 3 款兼具实用性与氛围感的年会抽奖软件,从界面设计到功能特色,全方位为你…...
智防火灾,慧控能耗:物联网赋能金融行业电气安全革新
摘要 随着金融行业对电气安全需求的不断提升,传统用电管理模式已难以满足现代金融机构对火灾防控、能耗管理和智能运维的要求。本文基于物联网、云计算及大数据分析技术,提出一套针对金融行业的安全用电解决方案。该方案通过智能化硬件部署与平台化管理…...
UML基本概念:构造块、公共机制与规则
本篇来介绍UML的一些基础概念。 1 UML的结构 2 构造块 UML构造块是构成UML模型的基础元素,它们共同构成了UML的核心。 UML 的三种基本构造块是: 事物:对模型中重要元素的抽象,如类、对象等等关系:用来连接事物的&a…...
JAVA项目中常见的注解总结
以下是 Spring Boot/Spring MVC 项目中按使用频率排序的核心注解总结,包含常用场景和示例,帮助你快速掌握高频开发需求: 一、高频基础注解(框架核心) 1. SpringBootApplication(启动类注解) …...
数字电子技术基础(六十二)——使用Multisim软件绘制边沿触发的D触发器和JK触发器
1 使用Mulitism软件模拟时钟触发的D触发器 D触发器是一种基本的数字电路存储元件,它在时钟信号的边沿将输入数据D传递到输出Q。下面开始使用Multisim软件来模拟时钟触发的D触发器。 器件选择: 触发器选择:在组选项栏中点击Misc Digital&am…...
滚珠丝杆的承载力是多少?
滚珠丝杆的承载力不是一个固定值,它受到多种因素的影响,包括直径、螺距、滚珠个数、滚珠直径、材料、润滑条件等。 滚珠丝杆的承载力主要取决于其额定动负荷和静负荷,额定动负荷是指在特定条件下,滚珠丝杆能够承受的动态负载&am…...
CQF预备知识:一、微积分简介 —— 基本术语详解
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。 📖 数学入门全解 本教程为复习课程,旨在帮助读者复习数学知识。教程涵盖以下四个主题: 微积分线性代数微…...
【深度估计 Depth Estimation】数据集介绍
文章目录 总览1. KITTI Depth Completion1.1. 来源1.2. 采集场景1.3. 数据集内容1.4. 标注内容1.5. 任务目标1.6. 样本量1.7. 下载链接 2. KITTI Stereo Evaluation 20152.1. 来源2.2. 采集场景2.3. 数据集内容2.4. 标注内容2.5. 任务目标2.6. 样本量2.7. 下载链接 3. Virtual …...
鸿蒙UI开发——Builder与LocalBuilder对比
1、概 述 在ArkUI中,有的朋友应该接触过Builder和LocalBuilder。其中有了LocalBuilder的存在,是为了解决组件的父子关系和状态管理的父子关系保持一致的问题。 这里面最直观的表现则是this的指向问题与组件刷新问题,本文对Builder与LocalBu…...
FFT加窗和抽取滤波
FFT加窗 在信号处理中,为了减少频谱泄漏(Spectral Leakage),在进行快速傅里叶变换(FFT)时通常会采用加窗(Windowing)技术。包括常见的窗函数及其特性对比。 MATLAB FFT 加窗流程 采…...
CentOS 10:启动telnet服务
参考, 鳥哥私房菜 - 第七章、網路安全與主機基本防護:限制埠口, 網路升級與 SELinux 7.3.3 埠口与服务的启动/关闭及开机时状态设定 我们知道系统的 Telnet 服务通常是以 super daemon 来控管的,请您启动您系统的 telnet 试看看。 1 要启动 …...
腾讯位置服务重构出行行业的技术底层逻辑
位置智能:重构出行行业的技术底层逻辑 在智慧城市建设与交通出行需求爆发的双重驱动下,位置服务正从工具层跃升为出行行业的核心基础设施。腾讯位置服务以“连接物理世界与数字空间”为核心理念,通过构建高精度定位、实时数据融合、智能决策…...