- Leetcode 2962. Count Subarrays Where Max Element Appears at Least K Times
- 1. 解題思路
- 2. 代碼實現
- 題目鏈接:2962. Count Subarrays Where Max Element Appears at Least K Times
1. 解題思路
這一題思路上同樣很直接,就是找到最大的元素所在的全部的位置坐標,然后分別考慮取 i i i到 i + k i+k i+k個最大元素時substring左右可以選擇的起止點位置數目,相乘累加即可。
2. 代碼實現
給出python代碼實現如下:
class Solution:def countSubarrays(self, nums: List[int], k: int) -> int:_max = max(nums)n = len(nums)flags = []for i, x in enumerate(nums):if x == _max:flags.append(i)m = len(flags)if m < k:return 0ans = 0flags.insert(0, -1)for i in range(m-k+1):ans += (flags[i+1]-flags[i]) * (n-flags[i+k])return ans
提交代碼評測得到:耗時1040ms,占用內存30.7MB。