Python程序:查找售出n件商品后剩余商品数量
假设我们有一个名为items的数字列表和另一个值n。一位销售人员在一个包里装有随机ID的商品。销售人员可以从包中删除多达n件商品。我们必须找到删除n件商品后包中不同ID的最小数量。
因此,如果输入类似于items = [2, 2, 6, 6] n = 2,则输出将为1,因为我们可以出售两件ID为2或ID为6的商品,然后只剩下具有单个目标的商品。
为了解决这个问题,我们将遵循以下步骤
- c := items中每个元素的频率
- ans := c的大小
- freq := 对c中所有频率的列表进行排序
- i := 0
- 当 i < freq的大小 时,执行:
- 如果 freq[i] <= n,则
- n := n - freq[i]
- ans := ans - 1
- 否则
- 返回 ans
- i := i + 1
- 如果 freq[i] <= n,则
- 返回 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
广告