https://leetcode.com/problems/majority-element
🧐 배열의 같은 값이 모아져 있으면 카운팅할 수 있을듯하다
➡️ 배열을 오름차순이나 내림차순으로 sorting 한다
➡️ 값이 달라지는 시점부터 카운팅을 시작한다.
do 배열 오름차순으로 정렬
for(인덱스 = 0 to 배열 길이){
if(현재원소 != 이전원소){
count = 0
}
count++
if(count > 배열길이/2){
return 현재원소
}
}
public int majorityElement(int[] nums) {
if(nums.length == 1) return nums[0];
Arrays.sort(nums);
return nums[nums.length / 2];
}
nums.length
를 체크해 연산할 필요가 없는 경우 빠르게 리턴했다.
어떤 원소가 nums의 과반수 이상을 차지한다면, 각각의 요소를 카운팅할 필요없이 중간 인덱스의 값은 무조건 해당 원소이다.
➡️ 문제의 숨겨진 원리를 파악해서, 불필요한 연산을 줄이자!