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

【Leetcode 每日一题】2145. 统计隐藏数组数目

问题背景

给你一个下标从 0 0 0 开始且长度为 n n n 的整数数组 d i f f e r e n c e s differences differences,它表示一个长度为 n + 1 n + 1 n+1隐藏 数组 相邻 元素之间的 差值 。更正式的表述为:我们将隐藏数组记作 h i d d e n hidden hidden,那么 d i f f e r e n c e s [ i ] = h i d d e n [ i + 1 ] − h i d d e n [ i ] differences[i] = hidden[i + 1] - hidden[i] differences[i]=hidden[i+1]hidden[i]
同时给你两个整数 l o w e r lower lower u p p e r upper upper,它们表示隐藏数组中所有数字的值都在 区间 [ l o w e r , u p p e r ] [lower, upper] [lower,upper] 之间。

  • 比方说, d i f f e r e n c e s = [ 1 , − 3 , 4 ] differences = [1, -3, 4] differences=[1,3,4] l o w e r = 1 lower = 1 lower=1 u p p e r = 6 upper = 6 upper=6,那么隐藏数组是一个长度为 4 4 4 且所有值都在 1 1 1 6 6 6(包含两者)之间的数组。
  • [ 3 , 4 , 1 , 5 ] [3, 4, 1, 5] [3,4,1,5] [ 4 , 5 , 2 , 6 ] [4, 5, 2, 6] [4,5,2,6] 都是符合要求的隐藏数组。
  • [ 5 , 6 , 3 , 7 ] [5, 6, 3, 7] [5,6,3,7] 不符合要求,因为它包含大于 6 6 6 的元素。
  • [ 1 , 2 , 3 , 4 ] [1, 2, 3, 4] [1,2,3,4] 不符合要求,因为相邻元素的差值不符合给定数据。

请你返回 符合 要求的隐藏数组的数目。如果没有符合要求的隐藏数组,请返回 0 0 0

数据约束

  • n = d i f f e r e n c e s . l e n g t h n = differences.length n=differences.length
  • 1 ≤ n ≤ 1 0 5 1 \le n \le 10 ^ 5 1n105
  • − 1 0 5 ≤ d i f f e r e n c e s [ i ] ≤ 1 0 5 -10 ^ 5 \le differences[i] \le 10 ^ 5 105differences[i]105
  • − 1 0 5 ≤ l o w e r ≤ u p p e r ≤ 1 0 5 -10 ^ 5 \le lower \le upper \le 10 ^ 5 105lowerupper105

解题过程

隐藏数组数组中的所有元素,都可以由数组的首项与 d i f f e r e n c e s differences differences 数组中对应位置的元素求和得到。
要确定有多少可能的数组,只需要计算有哪些可能的首项即可。
要求数组中每个元素都在给定范围内,实际上会得到一系列不等式,最终首项的范围是 [ l o w e r − m i n , u p p e r − m a x ] [lower - min, \ upper - max] [lowermin, uppermax],其中 m i n min min m a x max max 分别表示所给数组的前缀和数组的最小最大值。

具体实现

class Solution {public int numberOfArrays(int[] differences, int lower, int upper) {long preSum = 0, min = 0, max = 0;for (int diff : differences) {preSum += diff;min = Math.min(min, preSum);max = Math.max(max, preSum);}return (int) Math.max(upper - lower - max + min + 1, 0);}
}

相关文章:

  • 爬虫学习——LinkEXtractor提取链接与Exporter导出数据
  • OpenCV 图形API(47)颜色空间转换-----将 I420(YUV 4:2:0) 格式的图像数据转换为 RGB 格式
  • 大模型应用开发大纲
  • 什么是SPA,SPA与MAP区别
  • alibaba-JSONObject使用
  • 数据库优化
  • 全球首个人形机器人半程马拉松技术分析:翻车名场面背后的突破与挑战
  • Java第五节:继承thread类创建线程
  • C语言高频面试题——strcpy与memcpy区别
  • 江湖密码术:Rust中的 bcrypt 加密秘籍
  • NestJS-Knife4j
  • Java Lambda表达式指南
  • 深入理解路由器、IP地址及网络配置
  • 【SF顺丰】顺丰开放平台API对接(Java对接篇)
  • 科大讯飞Q1营收46.6亿同比增长27.7%,扣非净利同比增长48.3%
  • 全排列问题cpp
  • OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比
  • 代码随想录算法训练营Day32
  • css3新特性第五章(web字体)
  • 推荐系统/业务,相关知识/概念2
  • 广西人饮旱情仍持续发展,桂西北、桂中风险较高
  • 江西九江市人大常委会原副主任戴晓慧主动交代问题,接受审查调查
  • 年近九旬的迪图瓦,指挥能量比盛年更为强劲
  • “代课老师被男友杀害案”一审开庭,将择期宣判
  • 电子产品已拆封,还能申请“七天无理由退货”吗?上海法院这样判
  • 美国同日曝两起泄密事件:防长群聊向家人分享作战计划,白宫平面图被“共享”