给定一个元素都是正整数的数组A ,正整数 L 以及 R (L <= R)。
求连续、非空且其中最大元素满足大于等于L 小于等于R的子数组个数。
class Solution {
public:
int numSubarrayBoundedMax(vector<int>& A, int L, int R) {
int rpos = -1, result = 0;
vector<int> dp(A.size(), 0);
for (int i = 0; i < A.size(); ++i) {
if (A[i] > R) {
dp[i] = 0;
rpos = i;
} else if (A[i] < L) {
if (!i) dp[i] = 0;
else dp[i] = dp[i-1];
} else {
dp[i] = i - rpos;
}
result += dp[i];
}
return result;
}
};