과반수 엘리먼트
파이썬 알고리즘
과반수 엘리먼트 - leetcode 169번
문제
해설
- 가장 작은 단위(0 or 1)로 나누었을때, 합치면서 해결할 수 있을때 -> 분할정복
- 재귀함수로 가장 작은 단위까지 나누어준다.(대부분 절반으로 나눠서 다시 호출)
- 가장 작은 단위들에 대한 처리 (제일 위에서 if문 처리)
- return에서 병합처리(여기서는 Ture or False가 0/1인점을 이용해서 인덱스 처리)
풀이
class Solution:
def solution(self, nums):
if not nums:
return None
if len(nums) == 1:
return nums[0]
mid = len(nums) // 2
a = self.solution(nums[:mid])
b = self.solution(nums[mid:])
return [b, a][nums.count(a) > mid]
# 1. 과반수 문제 처리 아이디어