📜  Python|使用 Counter 的具有不同元素的最小子集数

📅  最后修改于: 2022-05-13 01:54:26.913000             🧑  作者: Mango

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