795. 区间子数组个数(Rating 1817)
795. 区间子数组个数(Rating 1817)
以下内容偏向于记录个人练习过程及思考,非常规题解内容
题目
思路
自己没做出来。
参考官解,思路比较清晰。
以某个不大于right的数字结尾时
- 找到靠左的第一个大于right的数字,作为子数组左边界的最小位置
- 找到靠左的第一个大于等于left且小于等于right的数字,作为子数组左边界的最大位置
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
def numSubarrayBoundedMax(self, nums: List[int], left: int, right: int) -> int:
last0, last1 = -1, -1
ret = 0
for idx, num in enumerate(nums):
if num > right:
last0 = idx
last1 = -1
elif left <= num <= right:
last1 = idx
if last1 != -1:
ret += last1 - last0
return ret
本文由作者按照 CC BY 4.0 进行授权