1
# Runtime: 628 ms (Top 69.2%) | Memory: 18.88 MB (Top 60.5%)5
def numberOfSubarrays(self, nums, k):8
nums = [2, 2, 1, 2, 1, 2, 2]10
2 even numbers to left of first 111
2 even numbers to right of last 112
total number of subarrays = pick between 0-2 numbers on left, then, pick between 0-2 numbers on right13
i.e (left+1) (right+1)14
Then slide window to next set of 2 odd numbers19
for i in range(len(nums)):21
odds.append(i) #' Find index of all odd numbers '23
odds = [-1] + odds + [len(nums)] #' Handle edge cases '26
for i in range(1, len(odds) - k):27
left = odds[i] - odds[i - 1] - 1 #' Number of 'left' even numbers '29
odds[i + k] - odds[i + k - 1] - 130
) #' Number of 'right' even numbers '31
nice += (left + 1) * (right + 1) #' Total sub-arrays in current window '