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

从零学算法3355

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

  • 最朴素的做法就是遍历每个区间,让 nums 中在区间的数都减 1,最后遍历一遍 nums 看是否还有大于 0 的数,但是这样会超时
  • 让一段区间同时减 1,这一步操作可以用差分数组优化,此时就不会超时
  •   public boolean isZeroArray(int[] nums, int[][] queries) {int n = nums.length;int[] dif = new int[n];dif[0] = nums[0];// 得到差分数组for(int i = 1; i < n; i++){dif[i] = nums[i] - nums[i - 1];}// 根据区间更新差分数组for(int[] q : queries){dif[q[0]]--;if(q[1] + 1 < n)dif[q[1] + 1]++;}// 根据差分数组还原for(int i = 0; i < n; i++){dif[i] = dif[i] + (i > 0 ? dif[i - 1] : 0);if(dif[i] > 0)return false;}return true;}
    
  • 其实得到差分数组这个循环都能省略,我们直接根据区间更新差分数组,此时 dif 能还原出原数组每个元素能减多少个 1
  •   public boolean isZeroArray(int[] nums, int[][] queries) {int n = nums.length;int[] dif = new int[n];// 根据区间更新差分数组for(int[] q : queries){dif[q[0]]++;if(q[1] + 1 < n)dif[q[1] + 1]--;}// 根据差分数组还原for(int i = 0; i < n; i++){// dif[i]:nums[i] 能减的 1 的个数dif[i] = dif[i] + (i > 0 ? dif[i - 1] : 0);// 能减的 1 够不够 nums[i] 挥霍if(dif[i] < nums[i])return false;}return true;}
    
http://www.dtcms.com/a/496804.html

相关文章:

  • 北京企业网站怎么建设深圳网站专业建设公司
  • 第七篇《IPv4地址详解:A、B、C类地址是如何划分的?》
  • 专注电子商务网站建设淘金企业网站建设
  • 网站建设和挂标情况清理表一份完整的活动策划方案
  • 算法专题十三:栈
  • 网站创建的流程是什么网站免费正能量软件下载
  • YOLOv3 深度解析:目标检测领域的经典革新
  • pc端网站模型建设工具wordpress 插件有后门
  • 网站怎么做下载苏州集团网站设计公司
  • 井祥交通建设工程有限公司 网站免备案做网站可以盈利吗
  • 36-基于STM32的智能鱼缸设计与实现
  • 什么网站容易做百度权重建立自我
  • 为什么不能直接从外存加载到显存上??
  • 做视频网站需要多大带宽恒信在线做彩票的是什么样的网站
  • 关键词网站建设一佰互联自助建站
  • 南京网站建设要多少钱自己公司怎么做网站
  • 大棚网站怎么做网站统计插件
  • web3定义以及应用落地场景展望
  • 北京哪里有教怎么做网站的上海网站制作公司介绍
  • 广州网站建设在线飞书企业邮箱怎么申请
  • VMware 各版本下载教程(20251017)
  • 高可用集群:5分钟掌握核心要点
  • 做理财网站网站建设合同付款约定
  • 一般做网站宽高多少公司做网站推广需要多少钱
  • JavaScript 核心概念全解析:数据类型、拷贝、运算符与类型判断
  • C++: 继承
  • 注册域名查询网站做网站应该注意哪些问题
  • redission封装,分布式锁使用
  • 算法沉淀第五天(Registration System 和 Obsession with Robots)
  • 政务门户网站建设规范最受欢迎国内设计网站