[Leetcode] 169. Majority Element
Algorithm2021. 8. 7. 20:35
반응형
Identifying the Problem
최빈값을 찾아라
단 최빈값은 배열 길이 절반 이상 있다.
Input: nums = [3,2,3] Output: 3
Input: nums = [2,2,1,1,1,2,2] Output: 2
Organizing thoughts
바로 떠오르는 알고리즘이 있긴 한데, O(n²)로 상당히 복잡하고 뻔함
그래서 발견한 게 Boyer-Moore 알고리즘임
그림만 봐도 직관적으로 이해가 된다.
main idea : count 가 가장 높았을 때, major의 값이 return 된다.
1. 1부터 마지막만큼 반복하면서
2. major와 nums [i]가 같다면
2-1 count를 증가
3. 다르다면
3-1 count--;
4. count 가 0이 되는 순간 major = nums[i]
5. major값을 return
Sourcecode
int majorityElement(int* nums, int numsSize)
{
int major = nums[0];
int count = 1;
for(int i=1; i<numsSize; i++) //1
{
if(major == nums[i]) //2
count++;
else //3
count--;
if(count == 0) //4
{
major = nums[i];
count++;
}
}
return major; //5
}
New things learned
- Boyer-Moore 알고리즘
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 23. Merge k Sorted Lists (0) | 2021.08.09 |
---|---|
[Leetcode] 143. Reorder List (0) | 2021.08.09 |
[Leetcode] 168. Excel Sheet Column Title (0) | 2021.08.07 |
[Leetcode] 155. Min Stack (0) | 2021.08.07 |
[Leetcode] 141. Linked List Cycle (0) | 2021.08.07 |
댓글()