문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
크기가 n인 배열 nums가 주어졌을 때, 가장 많이 등장하는 요소를 반환해라.
가장 많이 등장하는 요소는 [n / 2]번 이상 등장하는 요소이다. 가장 많이 등장하는 요소는 항상 배열에 존재한다고 가정한다.
#1
Input: nums = [3, 2, 3]
Output: 3
#2
Input: nums = [2, 2, 1, 1, 1, 2, 2]
Output: 2
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;
}
}