Majority Element II - Solution
Solutions and explanations
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
freq_map = collections.defaultdict(int)
for num in nums:
freq_map[num] += 1
res = []
n = len(nums)
for ele, cnt in freq_map.items():
if cnt > n // 3:
res.append(ele)
return res
Complexity Analysis
Here, n is the size of the input.
- Time Complexity:
O(n) - Space Complexity:
O(n)
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
freq_map = collections.defaultdict(int)
n = len(nums)
res = set()
for num in nums:
freq_map[num] += 1
if freq_map[num] > n // 3:
res.add(num)
return list(res)
Complexity Analysis
Here, n is the size of the input.
- Time Complexity:
O(n) - Space Complexity:
O(n)
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
count_map = collections.Counter(nums)
n = len(nums)
res = []
for num, cnt in count_map.most_common(2):
if cnt > n // 3:
res.append(num)
return res
Complexity Analysis
Here, n is the size of the input.
- Time Complexity:
O(n) - Space Complexity:
O(n)
class Solution:
def majorityElement(self, nums: List[int]) -> List[int]:
# 1st pass: Find candidates
majority_map = defaultdict(int) # Track up to 2 candidates
for num in nums:
majority_map[num] += 1
if len(majority_map) > 2:
new_majority_map = defaultdict(int)
for ele, cnt in majority_map.items():
if cnt > 1:
new_majority_map[ele] = cnt - 1
majority_map = new_majority_map
# 2nd pass: Verify candidates
res = []
n = len(nums)
for num in majority_map:
if nums.count(num) > n // 3:
res.append(num)
return res
Complexity Analysis
Here, n is the size of the input.
- Time Complexity:
O(n) - Space Complexity:
O(1)