← All problems

2962. Count Subarrays Where Max Element Appears at Least K Times

MediumOpen on LeetCodeProblem statement

Problem Statement

2962. Count Subarrays Where Max Element Appears at Least K Times

Medium


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 least k 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:

Java

Source file
class Solution {
    public long countSubarrays(int[] nums, int k) {
        int n = nums.length, maxm = 0, count = 0;
        long ans = 0;
        for (int i = 0; i < n; i++)
            maxm = Math.max(maxm, nums[i]);
        for (int lt = 0, rt = 0; rt < n; rt++) {
            if (nums[rt] == maxm)
                count++;
            while (count == k) {
                if (nums[lt] == maxm)
                    count--;
                lt++;
            }
            ans += lt;
        }
        return ans;
    }
}