首页 > 其他分享 >区间子数组的数目

区间子数组的数目

时间:2022-11-24 11:56:23浏览次数:61  
标签:right nums i1 i2 数组 区间 数目 left

区间子数组的数目

给你一个整数数组 nums 和两个整数:left 及 right 。找出 nums 中连续、非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个数。

生成的测试用例保证结果符合 32-bit 整数范围。

示例 1:

输入:nums = [2,1,4,3], left = 2, right = 3
输出:3
解释:满足条件的三个子数组:[2], [2, 1], [3]
示例 2:

输入:nums = [2,9,2,5,6], left = 2, right = 8
输出:7

提示:

1 <= nums.length <= 105
0 <= nums[i] <= 109
0 <= left <= right <= 109

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

根据题目条件,可以将数组元素划分为三类:

  1. 大于right
  2. 在left 和 right 之间
  3. 小于left

要满足子数组的最大值在left和right之间,那么数组中不能包含大于right的元素,同时必须包含处于left和right之间的元素。枚举子数组的右端点i,

  1. 大于right,显然并不存在,
  2. 小于left,记录上一个大于right的下标i1和处于left和right之间的下标i2,必须包含i2但是不能包含i1,则可以构成的子数组的数目为i2 - i1
  3. 处于left和right之间,记录上一个大于right的下标i1,更新一下i2,依然是i2-i1

标签:right,nums,i1,i2,数组,区间,数目,left
From: https://www.cnblogs.com/huangxk23/p/16921384.html

相关文章

  • 实验4-数组
    1.是,42.是,13.是,是1.是,42.是,1devc++写的忘记保存了,emmm ......
  • 力扣81(java&python)-搜索旋转排序数组 II(中等)
    题目:已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[......
  • js提取对象数组中的某一个属性组成新数组
    例:1arrold=[23{name:"name1",age:"1"},4{name:"name2",age:"2"},5{name:"name3",age:"3"},6{name:"name4",age:"4"},......
  • lc2470. 最小公倍数为 K 的子数组数目(简单dp)
    给你一个整数数组nums和一个整数k,请你统计并返回nums的子数组中满足元素最小公倍数为k的子数组数目。子数组是数组中一个连续非空的元素序列。数组的最小公......
  • 算法基础:区间合并算法及模板应用
    区间合并⭐写在前面的话:本系列文章旨在复习算法刷题中常用的基础算法与数据结构,配以详细的图例解释,总结相应的代码模板,同时结合例题以达到最佳的学习效果。本专栏面向算法零......
  • 往数组中push对象,会覆盖之前 push的值
    1varobj={a:123,b:234,c:345};2vararray=[];3for(vari=0;i<obj.length;i++){varresultObj={};resultObj.name=obj[i];array.push(resultObj);4};......
  • 关于String和byte数组之间的转化问题
    上次在项目中遇到了这样的一个问题,我从接口取到的rawData数组的长度是8192,我将这个byte数组用new String(rawwData)的方法将byte数组转化为字符串,作为参数传给另外的一个方......
  • js 数组删除与这条数据相关的所有数据
    在开发过程中,后台同事给出的树状数据是列表形式的数据。当要删除此条数据时,需要删除掉此数据下所有的子级数据。效果图如下: 删除id为11后的数据:  具体代码如下:......
  • 代码随想录——数组
    前言:由于时间有限,刷代码随想录就不再像剑指offer的几篇博客那样把题解写的那么详细了。这里仅写几个注意点,详细题解看卡神的即可。二分查找题目 简单注意:区间的处理......
  • 数组中哪些方法是响应式
    push('a','b')pop()unshift('a','b','c')shift()splice(2,0,'a')sort()reverse()arr[0]='aaa';这个不是响应式的Vue.set(this.letters,0,'bbbbb');......