超市里的货物架调整 | 豆包MarsCode AI刷题

73 阅读2分钟

问题理解:

货物架上有n个格子,每个格子中放置一个商品,用小写字母a到z表示。顾客从货物架第一个格子开始,依次寻找自己想购买的商品。如果:在某个格子找到了目标商品,顾客就购买并离开;遇到一个空格子或者找不到目标商品,顾客也会离开。我们的任务是重新调整货物架上的商品顺序,最大化顾客可以购买到的商品数量。

分析任务:

1.货物架上的商品库存有限,顾客的需求量可能大于或小于库存量。

2.为了最大化售出商品,应该优先安排顾客需求中商品的顺序。

3.每种商品实际售出的数量不能超过货物架上该商品的库存。

详细解法:

步骤 1:统计库存和需求

用 Counter 来统计:

货物架上每种商品的库存量。

顾客需求中每种商品的需求量。

步骤 2:计算满足需求的商品数量

对顾客的每种商品需求:

如果这种商品在货物架上有库存,取库存量和需求量的较小值。

如果这种商品不在货物架上,则无法满足需求。

步骤 3:计算总售出商品数量

将每种商品实际售出的数量累加,得到最终结果。

代码实现:

def solution(n: int, m: int, s: str, c: str) -> int:
    from collections import Counter
    stock = Counter(s)
    demand = Counter(c)
    sold = 0
    for item, qty in demand.items():
        if item in stock:
            sold += min(stock[item], qty)         
    return sold

总结:

**这道题的核心在于:

用哈希表快速统计商品的库存和顾客的需求。

合理地匹配需求与库存,保证每种商品的售出数量不超出库存。**