넘치게 채우기

[LeetCode] 3005. Count Elements With Maximum Frequency 본문

PS/LeetCode

[LeetCode] 3005. Count Elements With Maximum Frequency

riveroverflow 2024. 3. 8. 12:31
728x90
반응형

https://leetcode.com/problems/count-elements-with-maximum-frequency/description/

Leetcode - Count Elements With Maximum Frequency

문제 유형 : 해시, 그리디

문제 난이도 : Easy

 

 

문제

You are given an array nums consisting of positive integers.

Return the total frequencies of elements in nums such that those elements all have the maximum frequency.

The frequency of an element is the number of occurrences of that element in the array.

 

당신은 자연수 배열 nums를 받습니다. nums의 요소들의 총 빈도를 구하여 가장 높은 빈도들의 합을 구하시오.

 

풀이

최대빈도와 가장 많은 요소를 가진 수들의 카운트를 0으로 초기화한다.

num-count꼴의 맵을 생성한다.

순차적으로 배열을 순회하면서, 각 숫자를 업데이트한다.

만약 숫자의 count가 기존 최대빈도보다 커진다면, 가장 많은 요소를 가진 수들의 카운트를 초기화한다.

만약 숫자의 count가 기존 최대빈도와 같다면, 가장 많은 요소를 가진 수들의 카운트에 1을 더한다.

 

최대빈도 * 가장 많은 요소를 가진 수들의 카운트를 반환한다.

 

코드

C++

class Solution {
public:
    int maxFrequencyElements(vector<int>& nums) {
        unordered_map<int, int> mp;
        int cnt = 0;
        int maxCnt = 0;

        for(int i = 0; i < nums.size(); i++) {
            mp[nums[i]]++;

            if(mp[nums[i]] > maxCnt) {
                maxCnt = mp[nums[i]];
                cnt = 0;
            }

            if(mp[nums[i]] == maxCnt) {
                cnt++;
            }
        }

        return cnt * maxCnt;
    }
};
728x90
반응형