LeetCode每日一题——795. 区间子数组个数

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

题目

给你一个整数数组 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

思路

一次遍历模拟即可

  • index表示上一次遇到的大于给定区域的值的下标,意味着该下标之后的都是符合要求的坐标
  • tmp表示上一个以给定区域值为最后一个元素的子数组个数
  • 遍历数组,遇到元素nums[i]>right的更新tmp和index
  • 遇到元素nums[i]<=right的又分为两种情况

(1)nums[i]>=left,说明该元素在给定区域内,那么从上一个index开始以任意元素开头到nums[i]结束都符合条件

(2)nums[i]<left, 说明该元素不在给定区域内,那么不能以该元素结尾,但是我们可以找到上一个以给定区域元素为结尾的区域并将二者结合即为所需答案

题解

class Solution:
    def numSubarrayBoundedMax(self, nums: List[int], left: int, right: int) -> int:
        res,index,tmp=0,-1,0
        for i,s in enumerate(nums):
          # 更新index和tmp
            if s>right:
                index,tmp=i,0
            # 第一种情况
            elif s>=left:
                tmp=i-index
            # 第二种情况
            res+=tmp
        return res
目录
相关文章
|
1月前
|
算法
Leetcode第57题(插入区间)
LeetCode第57题“插入区间”的解题方法,包括题目描述、示例、算法思路和代码实现,旨在解决将新区间插入有序且不重叠的区间列表中,并合并重叠区间的问题。
14 0
Leetcode第57题(插入区间)
|
3月前
|
算法
LeetCode第57题插入区间
LeetCode第57题"插入区间"的解题方法,利用原区间集有序的特性,通过三步插入操作,有效实现了新区间的插入和重叠区间的合并。
LeetCode第57题插入区间
|
3月前
|
算法 Python
【Leetcode刷题Python】子数组查找
一个用于寻找给定字符串中最长重复子串的Python函数实现,采用了滑动窗口的方法来检测重复的子串。
20 1
|
3月前
|
算法 Java
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
40 0
|
5月前
|
存储 算法 测试技术
力扣经典150题第四十七题:汇总区间
力扣经典150题第四十七题:汇总区间
37 1
|
5月前
|
算法 测试技术 程序员
力扣经典150题第三十题:长度最小的子数组
力扣经典150题第三十题:长度最小的子数组
28 1
|
4月前
|
存储 算法
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
经典的滑动窗口的题目 力扣 2799. 统计完全子数组的数目(面试题)
|
5月前
|
存储 SQL 算法
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
高效日程管理:利用区间合并算法优化活动安排【python LeetCode57】
|
5月前
|
存储 算法 搜索推荐
掌握区间合并:解决实际问题的算法策略和应用案例【python LeetCode题目56】
掌握区间合并:解决实际问题的算法策略和应用案例【python LeetCode题目56】
|
5月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)