[JAVA/LeetCode] Top 100 Liked Question: 169. Majority Element

👀 문제

https://leetcode.com/problems/majority-element/

👊 도전

1. 설계

  1. HashMap으로 num의 개수를 센다.
  2. map을 순회하며 majority(n/2)보다 큰 value의 key를 리턴한다.

2. 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
 *
 * @author HEESOO
 *
 */
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
class Solution {
    public int majorityElement(int[] nums) {
        int n=nums.length;
        
        HashMap<Integer, Integer> map=new HashMap<>();
        for(int num:nums){ // num의 개수 카운트
            int value=map.getOrDefault(num, 0);
            map.put(num, value+1);
        }
        
        int answer=0;
        int majority=n/2;
        for(Map.Entry<Integer, Integer> entry:map.entrySet()){
            if(entry.getValue()>majority) { // majority 넘는 value의 key 리턴
                answer=entry.getKey();
                break;
            }            
        }
        
        return answer;
    }
}

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. HashMap을 이용한다
    • HashMap을 이용하여 nums의 num별 개수를 세서 저장한다.
    • map.entrySet()을 순회하며 majority(n/2)보다 큰 value를 찾고, 해당 key를 리턴한다.

👏 해결 완료!