[LeetCode] Majority Element

아르당·2025년 9월 23일

LeetCode

목록 보기
37/68
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

크기가 n인 배열 nums가 주어졌을 때, 가장 많이 등장하는 요소를 반환해라.
가장 많이 등장하는 요소는 [n / 2]번 이상 등장하는 요소이다. 가장 많이 등장하는 요소는 항상 배열에 존재한다고 가정한다.

Example

#1
Input: nums = [3, 2, 3]
Output: 3

#2
Input: nums = [2, 2, 1, 1, 1, 2, 2]
Output: 2

Constraints

  • n == nums.length
  • 1 <= n <= 5 * 10^4
  • -10^9 <= nums[i] <= 10^9

Solved

Map을 사용해서 nums[i]의 값을 키로하고 해당 키가 없으면 값에 1을 할당한다. nums를 순회하면서 해당 키가 나오면 값을 증가시킨다.
그리고 문제해서 크기가 n / 2보다 큰 게 가장 많이 등장한 값이라고 해서 nums 순회가 끝나고 Map을 순회해서 해당 키를 반환한다.

class Solution {
    public int majorityElement(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();

        for(int i = 0; i < nums.length; i++){
            map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }

        int result = 0;
        int n = nums.length / 2;

        for(Map.Entry<Integer, Integer> entry : map.entrySet()){
            if(entry.getValue() > n){
                result = entry.getKey();
            }
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글