👀 문제
https://leetcode.com/problems/majority-element/
👊 도전
1. 설계
- HashMap으로 num의 개수를 센다.
- 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. 설명
- HashMap을 이용한다
- HashMap을 이용하여 nums의 num별 개수를 세서 저장한다.
- map.entrySet()을 순회하며 majority(n/2)보다 큰 value를 찾고, 해당 key를 리턴한다.