LeetCode-【数组】-区间子数组个数

版权声明:转载注明出处就可以了。。。 https://blog.csdn.net/zw159357/article/details/82228405

给定一个元素都是正整数的数组A ,正整数 L 以及 R (L <= R)。

求连续、非空且其中最大元素满足大于等于L 小于等于R的子数组个数。

例如 :
输入: 
A = [2, 1, 4, 3]
L = 2
R = 3
输出: 3
解释: 满足条件的子数组: [2], [2, 1], [3].

注意:

  • L, R  和 A[i] 都是整数,范围在 [0, 10^9]
  • 数组 A 的长度范围在[1, 50000]

题解:参照:https://segmentfault.com/a/1190000014506077

class Solution {
    public int numSubarrayBoundedMax(int[] A, int L, int R) {
        int n=A.length;
        int res=0;
        int l=0,r=-1;
        for(int i=0;i<n;i++){
            if(A[i]>R){
                l=i+1;
                r=-1;
            }else{
                if(A[i]>=L)
                    r=i;
                if(r>=0)
                    res+=r-l+1;
            }
        }
        return res;
    }
}

猜你喜欢

转载自blog.csdn.net/zw159357/article/details/82228405