3005 Count Elements With Maximum Frequency
Published:
Problem
Solution
Intuition
This problem requires us to find the total number of elements which have the maximum frequency in a list. For example, if a list contains [1, 1, 2, 2, 3, 4], the answer would be 4 as there are 2 1’s and 2 2’s which is the maximum frequency. There are thus, 4 total elements that are part of the numbers that have maximum frequency.
To solve this problem we utilize a hashmap to store the frequencies of each element and then find the total unique number of elements which have a maximal frequency. We then multiply the unique number of elements with maximal frequency by the maximal frequency for the answer.
Approach
- Either iterate through
numsto populate a hashmap of frequencies calledcountswith the unique element as the key and the frequency as the value, or utilizeCounterlibrary. - Initialize
max_freqanduniq_elemvariables to store the maximum found frequency thus far and the number of unique elements with this frequency thus far. - Iterate through our hashmap to count
max_freqanduniq_elem. We resetuniq_elemwhen we find a new higher frequency. - Return the product of
max_freqanduniq_elemfor the total number of elements that have maximal frequency.
Complexity
Time complexity: $O(n)$. We iterate through the array to populate our hashmap and then iterate through the hashmap to check the number of unique elements with maximal frequency. These iterations both take linear time.
Space complexity: $O(n)$. We utilize a hashmap for counting frequencies which takes linear space complexity.
Code
class Solution:
def maxFrequencyElements(self, nums: List[int]) -> int:
counts = Counter(nums)
max_freq, uniq_elem = 0, 0
for count in counts:
if counts[count] == max_freq:
uniq_elem += 1
elif counts[count] > max_freq:
max_freq = counts[count]
uniq_elem = 1
return max_freq * uniq_elem
