假设我们有一个数字列表,称为项目,另一个值为n。推销员在袋子里的物品带有随机ID。推销员可以从购物袋中删除多达n个物品。取出n次后,我们必须找到袋子中不同ID的最小数量。
因此,如果输入类似于items = [2,2,6,6] n = 2,则输出将为1,因为我们可以出售ID为2或ID 6的两个项目,则只有单个目标的项目为那里。
为了解决这个问题,我们将按照以下步骤操作:
c:=项目中每个元素的出现频率
ans:= c的大小
freq:=排序c中所有频率的列表
i:= 0
当我<频率的大小时
返回ans
n:= n-频率[i]
ans:= ans-1
如果freq [i] <= n,则
除此以外,
我:=我+ 1
返回0
让我们看下面的实现以更好地理解:
from collections import Counter class Solution: def solve(self, items, n): c = Counter(items) ans = len(c) freq = sorted(c.values()) i = 0 while i < len(freq): if freq[i] <= n: n -= freq[i] ans -= 1 else: return ans i += 1 return 0 ob = Solution()items = [2, 2, 6, 6] n = 2 print(ob.solve(items, n))
[2, 2, 6, 6], 2
输出结果
1