class Solution:
def countSubarrays(self, nums: List[int], k: int) -> int:
n, res = len(nums), 0
maxi = max(nums)
for i in range(n):
cnt = 0
for j in range(i, n):
if nums[j] == maxi:
cnt += 1
if cnt >= k:
res += 1
return resclass Solution:
def countSubarrays(self, nums: List[int], k: int) -> int:
max_n, max_cnt = max(nums), 0
l = 0
res = 0
for r in range(len(nums)):
if nums[r] == max_n:
max_cnt += 1
while max_cnt > k or (l <= r and max_cnt == k and nums[l] != max_n):
if nums[l] == max_n:
max_cnt -= 1
l += 1
if max_cnt == k:
res += l + 1
return resclass Solution:
def countSubarrays(self, nums: List[int], k: int) -> int:
max_n, max_cnt = max(nums), 0
l = res = 0
for r in range(len(nums)):
if nums[r] == max_n:
max_cnt += 1
while max_cnt == k:
if nums[l] == max_n:
max_cnt -= 1
l += 1
res += l
return resclass Solution:
def countSubarrays(self, nums: List[int], k: int) -> int:
n = len(nums)
max_n = max(nums)
max_indexes = [-1]
for i, num in enumerate(nums):
if num == max_n:
max_indexes.append(i)
res = 0
for i in range(1, len(max_indexes) - k + 1):
cur = (max_indexes[i] - max_indexes[i - 1])
cur *= (n - max_indexes[i + k - 1])
res += cur
return resclass Solution:
def countSubarrays(self, nums: List[int], k: int) -> int:
max_n = max(nums)
max_indexes = deque()
res = 0
for i, num in enumerate(nums):
if num == max_n:
max_indexes.append(i)
if len(max_indexes) > k:
max_indexes.popleft()
if len(max_indexes) == k:
res += max_indexes[0] + 1
return res