795. 区间子数组个数

795. 区间子数组个数

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


C代码:双指针文章来源地址https://uudwc.com/A/Jw36G


int numSubarrayBoundedMax(int* nums, int numsSize, int left, int right) {
    int res = 0, last2 = -1, last1 = -1;
    for (int r = 0; r < numsSize; r++) {
        if (nums[r] >= left && nums[r] <= right) {
            last1 = r;
        } else if (nums[r] > right) {
            last2 = r;
            last1 = -1;
        }
        if (last1 != -1) {
            res += last1 - last2;
        }
    }
    return res;
}

// 4 1 1 1 3 1 1 2
// |         | | |
// 4  1113  <----
// 4  11131 
// 4  111311
// 7  1113112  <----

原文地址:https://blog.csdn.net/LIZHUOLONG1/article/details/133205942

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年09月24日 04:28
Python经典练习题(三)
下一篇 2023年09月24日 04:29