题目
给你一个下标从 0 开始的整数数组 nums 。nums 的一个子数组如果满足以下条件,那么它是 不间断 的:
i,i + 1,...,j表示子数组中的下标。对于所有满足i <= i1, i2 <= j的下标对,都有0 <= |nums[i1] - nums[i2]| <= 2。
请你返回 不间断 子数组的总数目。
子数组是一个数组中一段连续 非空 的元素序列。
链接
代码
from ast import List
from collections import Counter
class Solution:
def continuousSubarrays(self, nums: List[int]) -> int:
ans = 0
left = 0
cnt = Counter()
for right,x in enumerate(nums):
cnt[x] += 1
while max(cnt) - min(cnt) > 2:
y = nums[left]
cnt[y] -= 1
if cnt[y] == 0:
del cnt[y]
left += 1
ans += right -left + 1
return ans
