#6963. 零钱兑换 II(Coin Change II)
零钱兑换 II(Coin Change II)
零钱兑换 II(Coin Change II)
**难度:**中等
题目描述
给定一个整数数组 coins,表示不同面额的硬币;以及一个整数 amount,表示需要凑出的总金额。
请返回凑出该金额的组合数。如果无法凑出该金额,返回 0。
每种面额的硬币都有无限枚。硬币的选取顺序不同,但所选硬币数量相同,视为同一种组合。
题目保证最终答案可以用有符号 32 位整数表示。
样例 1
输入:amount = 5, coins = [1,2,5]
输出:4
**说明:**共有 4 种组合:
- (5=5)
- (5=2+2+1)
- (5=2+1+1+1)
- (5=1+1+1+1+1)
样例 2
输入:amount = 3, coins = [2]
输出:0
**说明:**只使用面额为 2 的硬币,无法凑出金额 3。
样例 3
输入:amount = 10, coins = [10]
输出:1
数据范围
- (1 \le \text{coins.length} \le 300)
- (1 \le \text{coins}[i] \le 5000)
coins中的面额各不相同。- (0 \le \text{amount} \le 5000)
| 测试点编号 | 层级 | n |
amount |
特殊性质 | 标准输出 | 设计目的 |
|---|---|---|---|---|---|---|
| 1 | 弱数据 | 1 | 0 | 目标金额为 0 | 1 | 检查空组合及 dp[0]=1 |
| 2 | 边界数据 | 7 | 无法凑出目标金额 | 0 | 检查无可行组合的情况 | |
| 3 | 弱数据 | 3 | 5 | 经典面额 1,2,5 |
4 | 检查组合计数,并避免把不同顺序重复计算 |
| 4 | 特殊数据 | 4 | 存在两个面额为 2 的输入项 | 6 | 检查当前程序对重复面额的实际计数行为 | |
| 5 | 极限数据 | 100 | 100000 | 面额为 1000,2000,…,100000 |
190569292 | 覆盖大金额、多面额,并让答案接近 int 上限 |