2962. Count Subarrays Where Max Element Appears at Least K Times
Description
You are given an integer array nums
and a positive integer k
.
Return the number of subarrays where the maximum element of nums
appears at leastk
times in that subarray.
A subarray is a contiguous sequence of elements within an array.
Example 1:
Input: nums = [1,3,2,3,3], k = 2 Output: 6 Explanation: The subarrays that contain the element 3 at least 2 times are: [1,3,2,3], [1,3,2,3,3], [3,2,3], [3,2,3,3], [2,3,3] and [3,3].
Example 2:
Input: nums = [1,4,2,1], k = 3 Output: 0 Explanation: No subarray contains the element 4 at least 3 times.
Constraints:
1 <= nums.length <= 105
1 <= nums[i] <= 106
1 <= k <= 105
Solutions
Solution: Sliding Window
- Time complexity: O(n)
- Space complexity: O(1)
JavaScript
js
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
const countSubarrays = function (nums, k) {
const n = nums.length;
const maxNum = Math.max(...nums);
let left = 0;
let count = 0;
let result = 0;
for (let index = 0; index < n; index++) {
if (nums[index] === maxNum) {
count += 1;
}
while (count >= k) {
if (nums[left] === maxNum) {
count -= 1;
}
result += n - index;
left += 1;
}
}
return result;
};