[Leetcode] 169. Majority Element
https://leetcode.com/problems/majority-element/숫자들로 이루어진 리스트가 주어졌을 때, 해당 리스트에서 가장 많이 등장하는 숫자를 찾는 문제
- majority element는 리스트의 사이즈가 n일 때, n/2번보다 많이 등장한다.
- 리스트는 비어있지 않고, majority element는 항상 존재한다.
Example 1
- Input : nums = [3,2,3]
- Output : 3
Example 2
- Input : nums = [2,2,1,1,1,2,2]
- Output : 2
Solution 1
Note
dict를 사용하여 특정 숫자가 몇 번 나타났는지를 관리하는 방법
1
2
3
4
5
6
7
8
9
10
11
class Solution:
def majorityElement(self, nums: List[int]) -> int:
lower = len(nums) / 2
count = dict()
for num in nums :
if num in count :
count[num] += 1
else :
count[num] = 1
if count[num] > lower :
return num
Solution 2
Note
중복을 허용하지 않는 set을 이용하는 방법
1
2
3
4
5
6
7
class Solution:
def majorityElement(self, nums: List[int]) -> int:
lower = len(nums) / 2
snums = set(nums)
for num in snums :
if nums.count(num) > lower :
return num