
주어진 크기 n의 배열 nums가 있을 때, 과반수 요소를 반환합니다.
과반수 요소는 ⌊n / 2⌋보다 더 많이 나타나는 요소입니다. 과반수 요소는 항상 배열에 존재한다고 가정할 수 있습니다.
Example 1:
Input: nums = [3,2,3]
Output: 3
Example 2:
Input: nums = [2,2,1,1,1,2,2]
Output: 2
Constraints:
Value > n/2 인지를 확이하여 맞다면 최빈값으로 반환합니다.
HashMap<Integert, Integer> map;
for (num : nums){
map.put(num, ?) 데이터가 없으면 초기값 설정, 있으면 1씩 증가
if( map.get(num) > nums길이/2 )
num 반환
}
getOrDefault(Key, Default-Value) +1을 사용하여 데이터가 없으면 0으로 초기화 하고, 데이터가 있으면 +1을 하여 빈도 수를 카운트 하였습니다.nums[] 길이 / 2 보다 큰 Value가 나오면 반환하도록 작성하였습니다. // HashTable
class Solution {
public int majorityElement(int[] nums) {
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
int halfLen = nums.length/2;
for (int num : nums){
map.put(num, map.getOrDefault(num, 0) + 1);
if(map.get(num) > halfLen)
return num;
}
return 0;
}
}
// Sorting
class Solution {
public int majorityElement(int[] nums) {
Arrays.sort(nums);
return nums[nums.length/2];
}
}
최빈값은 ⌊n / 2⌋보다 더 많이 나타나는 요소입니다라고 하면 정렬을 했을 경우 최소 절반에 위치해 있는 값이거나 그 이상의 위치에 있는 값을 말하기 때문에 절반에 있는 값을 확인하면 최빈값이 나오게 되는 것입니다.