给定不同面额的硬币 coins 和一个总金额 amount,编写一个函数计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。例如,coins = [1, 2, 5], amount = 11,最少需要 3 枚硬币(5+5+1)。请描述你的解题思路并实现代码。
考察说明
考察动态规划求解最值问题的建模能力与边界处理
回答思路
- 正确识别为完全背包最小化问题并定义 dp 数组含义
- 给出状态转移方程和初始化细节
- 正确处理无法凑成的情况(返回 -1)
- 能分析时间复杂度和空间复杂度并指出可优化点
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。