给你一个整数数组 nums 和两个整数:left 及 right 。找出 nums 中连续、非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个数。
生成的测试用例保证结果符合 32-bit 整数范围。
func numSubarrayBoundedMax(nums []int, left int, right int) (res int) {
last2, last1 := -1, -1
for i, x := range nums {
if left <= x && x <= right {
last1 = i
} else if x > right {
last2 = i
last1 = -1
}
if last1 != -1 {
res += last1 - last2
}
}
return
}