给定一个元素都是正整数的数组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;
}
}