## 문제
[Majority Element - LeetCode](https://leetcode.com/problems/majority-element)
## 코드
그냥 풀었던 버전 -> 요렇게 풀면 정렬 때문에 시간 복잡도가 O(nlogn)이 나온다.
```typescript
function majorityElement(nums: number[]): number {
return nums.sort((a, b) => a - b)[Math.floor(nums.length / 2)];
}
```
Boyer–Moore Voting Algorithm
```typescript
// Time Complexity: O(n)
// Space Complexity: O(1)
function majorityElement(nums: number[]): number {
let count = 0;
let candidate = 0;
for (let idx = 0; idx < nums.length; idx++) {
// count가 0인 경우에는 현재 요소를 새로운 후보로 설정하고 count = 1
if (count === 0) {
candidate = nums[idx];
count = 1;
} else {
candidate === nums[idx] ? count++ : count--;
}
}
return candidate;
}
```
## 참고