在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[i] <= n,则
- n:= n-freq[i]
- ans:= ans-1
- 否则,
- 返回ans
- i:= i + 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