Python Algorithm
LeetCode
229. Majority Element Ⅱ
- Given an integer array of size n, find all elements that appear more than n/3 times.
- Constraints:
- 1 ≤ nums.length ≤ 5 ⨉ 10⁴
- -10⁹ ≤ nums[i] ≤ 10⁹
from collections import Counter
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
from collections import Counter
answer = []
# 1. n / 3을 내림한 숫자 m 구하기
# 2. nums 리스트의 각 숫자들의 등장 횟수를 집계한 딕셔너리 만들기
# 3. 딕셔너리를 순회하면서 m보다 많이 등장한 숫자를 answer에 추가하기
n = len(nums)
m = math.floor(n / 3)
nums_counter = Counter(nums)
for num, cnt in nums_counter.items():
# cnt가 m보다 크면 answer에 num을 append
if cnt > m:
answer.append(num)
return answer
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
answer = []
for i in nums:
if nums.count(i) > len(nums) / 3:
answer.append(i)
answer = set(answer)
return answer
- Counter( ) : 주어진 객체의 요소를 키, 요소의 개수를 값으로 가지는 딕셔너리 생성
- from collections import Counter
https://leetcode.com/problems/majority-element-ii/