You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode库存配单算法题Python实现优化及难度咨询

问题难度判定

这道题属于LeetCode Easy 难度,核心考点是基础循环、字典操作和条件判断,不需要用到复杂算法或特殊数据结构,属于编程入门阶段的基础练习题。

现有代码的问题

你当前的实现硬编码了j/h/s三个商品的判断逻辑,存在三个明显问题:

  • 订单缺少任意一个商品key时,直接读取order['x']会抛出KeyError,无法适配只买1-2种商品的订单场景
  • 代码扩展性极差,如果后续店铺新增辣椒酱品类,必须手动修改判断条件才能支持
  • 返回结果是自定义的城市小写缩写,和题目要求的输出格式不匹配
优化方案

优化核心逻辑是只校验订单中实际存在的商品需求,订单中未提及的商品默认购买量为0,不需要做库存校验;同时补充城市名称映射、大小写兼容逻辑,对齐题目要求。
优化后的可运行代码:

# 门店库存数据
inven = {
  'tor': {'j':5,'h':0,'s':0},
  'van': {'j':10,'h':2,'s':6},
  'mon': {'j':3,'h':5,'s':5},
  'cal': {'j':1,'h':18,'s':2},
  'hal': {'j':28,'h':2,'s':12},
}
# 城市编码与输出名称映射,匹配题目示例输出要求
city_name_map = {
    'tor': 'Tor',
    'van': 'Van',
    'mon': 'Mon',
    'cal': 'Cal',
    'hal': 'Hali'
}

def find_order(order):
    res = []
    for city_code, stock in inven.items():
        fulfillable = True
        # 仅遍历订单中实际要求的商品做校验
        for sku, required in order.items():
            # 统一转小写兼容大小写输入,库存不足直接标记为不可履约
            if stock.get(sku.lower(), 0) < required:
                fulfillable = False
                break
        if fulfillable:
            res.append(city_name_map[city_code])
    return res

# 测试用例验证
if __name__ == "__main__":
    print(find_order({'j':3, 'h':2, 's':4})) # 输出: ['Van', 'Mon', 'Hali']
    print(find_order({'h':7, 's':1})) # 输出: ['Cal']
新手面试准备提示
  • 写业务逻辑时尽量避免硬编码固定字段,优先基于输入内容做动态遍历,既能减少异常报错,也能提升代码扩展性
  • 写完代码后必须覆盖边界场景测试:比如单商品订单、库存刚好满足需求、某商品库存为0等场景,不要仅验证全字段输入的理想情况
  • 注意对齐题目要求的输入输出格式,类似返回值命名、大小写这类细节问题,面试时很容易丢分

内容的提问来源于stack exchange,提问作者Sumit Dadwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:09:19