思路很简单,先统计每个元素的出现次数,然后排序,然后删除足够数目的:
class Solution:
def minSetSize(self, arr: List[int]) -> int:
freq = collections.Counter()
for elm in arr:
freq[elm] +=1
freq = list(freq.items())
freq.sort(key = lambda x: x[1], reverse = True)
n = len(arr)
m = 0
for i, elm in enumerate(freq):
m += elm[1]
if m >= n // 2:
return i + 1
return len(freq)