Python|使用 Counter 的具有不同元素的最小子集数
给你一个 n 元素数组。您必须从数组中创建子集,以便没有子集包含重复元素。找出可能的最小子集数。
例子:
Input : arr[] = {1, 2, 3, 4}
Output :1
Explanation : A single subset can contains all
values and all values are distinct
Input : arr[] = {1, 2, 3, 3}
Output : 2
Explanation : We need to create two subsets
{1, 2, 3} and {3} [or {1, 3} and {2, 3}] such
that both subsets have distinct elements.
我们有针对此问题的现有解决方案,请参阅具有不同元素的最小子集数量链接。我们将在Python中使用 Counter(iterable) 方法快速解决这个问题。方法很简单,计算数组中每个元素的频率并打印最大频率的值,因为我们希望每个子集不同,我们必须将任何重复的元素放在不同的子集中,所以要获得最小的子集数,我们应该至少有子集的最大频率数。
# Python program to find Minimum number of
# subsets with distinct elements using Counter
# function to find Minimum number of subsets
# with distinct elements
from collections import Counter
def minSubsets(input):
# calculate frequency of each element
freqDict = Counter(input)
# get list of all frequency values
# print maximum from it
print (max(freqDict.values()))
# Driver program
if __name__ == "__main__":
input = [1, 2, 3, 3]
minSubsets(input)
输出:
2