在python中查找售出n个物品后剩余物品数量的程序

在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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程