Leetcode 150 | Day 4: Majority Element

Leetcode 169는 배열에서 다수 요소(majority element)를 찾는 문제입니다. 다수 요소는 n / 2번보다 많이 나타납니다. 다수 요소는 항상 존재한다고 가정합니다.

두 가지 방법으로 해결할 수 있습니다.

방법 1: Map을 이용한 방식

이 방법은 Map을 사용하여 각 숫자가 몇 번 나타나는지 셉니다.

복잡도:

방법 2: Boyer-Moore 투표 알고리즘 (Boyer-Moore Voting Algorithm)

이는 상수 메모리를 사용하여 문제를 해결하는 최적화된 방식입니다.

숫자를 서로 대립하는 팀이라고 생각해보세요. 어떤 숫자가 다른 숫자와 만날 때마다 서로를 상쇄시킵니다. 다수 요소는 전체의 절반 이상 나타나므로, 항상 마지막까지 살아남게 됩니다.

작동 방식:

복잡도:

중요한 이유:

두 방법 모두 시간 복잡도는 O(n)입니다. 하지만 두 번째 방식은 메모리를 훨씬 적게 사용합니다. Map이 필요 없기 때문입니다. 따라서 대규모 데이터셋에 더 적합합니다.

출처: https://dev.to/afuji/leetcode-150-day-4-majority-element-naive-vs-optimized-eo6