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

leetcode 3355. 零数组变换 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:
    • 选择下标子集 [0, 2] 并将这些下标处的值减 1。
    • 数组将变为 [0, 0, 0],这是一个零数组。

示例 2:

输入: nums = [4,3,2,1], queries = [[1,3],[0,2]]

输出: false

解释:

  • 对于 i = 0: 
    • 选择下标子集 [1, 2, 3] 并将这些下标处的值减 1。
    • 数组将变为 [4, 2, 1, 0]
  • 对于 i = 1:
    • 选择下标子集 [0, 1, 2] 并将这些下标处的值减 1。
    • 数组将变为 [3, 1, 0, 0],这不是一个零数组。

提示:

  • 1 <= nums.length <= 10^5
  • 0 <= nums[i] <= 10^5
  • 1 <= queries.length <= 10^5
  • queries[i].length == 2
  • 0 <= li <= ri < nums.length

分析:这道题的操作是区间修改,单点查询,可以用差分数组解决。

构建差分数组 diff 的长度为 n+1,(n 是数组 nums 长度),用于记录每个查询对操作次数的增量影响。对每个查询区间 [left,right],在 diff[left] 处 +1,表示从 left 开始操作次数增加;在 diff[right+1] 处 −1,表示 right+1 之后的操作次数恢复原状。处理完全部操作后,根据 diff 数组恢复 nums 数组,如果 nums 数组中某个数大于 0,则说明不能全部转化为零数组,否则可以。注意减为负数的情况也属于可以转化。

bool isZeroArray(int* nums, int numsSize, int** queries, int queriesSize, int* queriesColSize) {int diff[numsSize+5];diff[0]=nums[0];for(int i=1;i<numsSize;++i)diff[i]=nums[i]-nums[i-1];for(int i=0;i<queriesSize;++i)diff[queries[i][0]]--,diff[queries[i][1]+1]++;nums[0]=diff[0];if(nums[0]>0)return false;for(int i=1;i<numsSize;++i){nums[i]=nums[i-1]+diff[i];if(nums[i]>0)return false;}return true;
}
http://www.lryc.cn/news/2383531.html

相关文章:

  • 【VLNs篇】02:NavGPT-在视觉与语言导航中使用大型语言模型进行显式推理
  • (T_T),不小心删掉RabbitMQ配置文件数据库及如何恢复
  • 创建react工程并集成tailwindcss
  • TDengine 安全部署配置建议
  • Axure全链路交互设计:快速提升实现能力(基础交互+高级交互)
  • 为什么wifi有信号却连接不上?
  • 蓝桥杯框架-LED蜂鸣器继电器
  • uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)
  • Dify的大语言模型(LLM) AI 应用开发平台-本地部署
  • 使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线
  • 移动端前端调试调研纪实:从痛点出发,到 WebDebugX 的方案落地
  • 8 种快速易用的Python Matplotlib数据可视化方法
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 3】【高通蓝牙hal主要流程介绍-上】
  • C# 深入理解类(实例构造函数)
  • RabbitMQ——消息确认
  • 测试W5500的第2步_使用ioLibrary库创建TCP客户端
  • 深度学习之用CelebA_Spoof数据集搭建一个活体检测-训练好的模型用MNN来推理
  • 【Java】泛型在 Java 中是怎样实现的?
  • 开源安全大模型Foundation-Sec-8B实操
  • 【JavaWeb】MySQL
  • 微信小游戏流量主广告自动化浏览功能案例5
  • 【C++ Primer 学习札记】函数传参问题
  • 软件的技术架构、应用架构、业务架构、数据架构、部署架构
  • CSS 文字样式全解析:从基础排版到视觉层次设计
  • 【高德开放平台-注册安全分析报告】
  • [特殊字符] React Fiber架构与Vue设计哲学撕逼实录
  • RabbitMQ的简介
  • 混合学习:Bagging与Boosting的深度解析与实践指南
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第一部分)
  • 大语言模型 16 - Manus 超强智能体 Prompt分析 原理分析 包含工具列表分析