795. Number of Subarrays with Bounded Maximum

class Solution:
    def numSubarrayBoundedMax(self, nums: List[int], left: int, right: int) -> int:
        
        ans, cnt = 0, 0
        pre = -1

        for i, e in enumerate(nums):
            if left <= e <= right:
                cnt = i - pre
            elif e > right:
                pre = i
                cnt = 0

            ans += cnt
        
        return ans