题目描述:
给定一个元素都是正整数的数组A ,正整数 L 以及 R (L <= R)。
求连续、非空且其中最大元素满足大于等于L 小于等于R的子数组个数。
思路:
最大元素满足大于等于L 小于等于R的子数组个数=最大元素满足 小于等于R-最大元素满足小于等于L-1
代码如下:
class Solution {
public:
int numSubarrayBoundedMax(vector<int>& A, int L, int R) {
return helper(A,R)-helper(A,L-1);
}
int helper(vector<int>A,int num){
int res=0;
int numArray=0;
for(int a:A){
if(a<=num){
numArray++;
res+=numArray;//前缀和计算
}
else{
numArray=0;
}
}
return res;
}
};