版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/excellentlizhensbfhw/article/details/84330265
We are given an array A
of positive integers, and two positive integers L
and R
(L <= R
).
Return the number of (contiguous, non-empty) subarrays such that the value of the maximum array element in that subarray is at least L
and at most R
.
Example : Input: A = [2, 1, 4, 3] L = 2 R = 3 Output: 3 Explanation: There are three subarrays that meet the requirements: [2], [2, 1], [3].
Note:
- L, R and
A[i]
will be an integer in the range[0, 10^9]
. - The length of
A
will be in the range of[1, 50000]
.
程序如下所示:
class Solution {
public int numSubarrayBoundedMax(int[] A, int L, int R) {
int res = 0;
int pre = -1, cur = -1;
for (int i = 0; i < A.length; ++ i){
if (A[i] > R){
pre = cur = i;
continue;
}
if (A[i] >= L){
cur = i;
}
res += cur - pre;
}
return res;
}
}