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

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;
}

相关文章:

  • PYTHON训练营DAY31
  • ⼆叉搜索树详解
  • 迅为RK3562开发板旋转Uboot logo和内核logo
  • string在c语言中代表什么(非常详细)
  • VitePress 中以中文字符结尾的字体加粗 Markdown 格式无法解析
  • 嵌入式学习笔记 D24 :系统编程之i/o操作
  • PyTorch 之 torch.distributions.Categorical 详解
  • MATLAB中进行语音信号分析
  • USB学习【13】STM32+USB接收数据过程详解
  • 关于element-ui的table type=“expand“ 嵌套表格展开异常问题解决方案
  • CYT4BB Dual Bank 1 - 存储机制
  • 02 基本介绍及Pod基础排错
  • P/Invoke 内存资源处理方案
  • Linux bash shell的循环命令for、while和until
  • C++面向对象——多态
  • 单片机复用功能重映射Remap功能
  • 基于单片机的车辆防盗系统设计与实现
  • 第六部分:第三节 - 路由与请求处理:解析顾客的点单细节
  • 【基础知识】SPI协议的种类及异同
  • OpenCV CUDA 模块特征检测与描述------在GPU上执行特征描述符匹配的类cv::cuda::DescriptorMatcher
  • “共栖与绵延”系列对话|张国捷、刘帅:以蚁为序的生命网络
  • 中英举行人工智能对话
  • 上海中心城区首条“定制化低空观光航线”启航,可提前一天提需求
  • 总书记回信二周年之际,上海如何将垃圾分类深度融入城市发展?
  • 中国证监会副主席李明:目前A股估值水平仍处于相对低位
  • 家庭医生可提前5天预约三甲医院号源,上海常住人口签约率达45%,