53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package top100liked
|
||
|
||
import (
|
||
"testing"
|
||
)
|
||
|
||
// https://leetcode.cn/problems/coin-change/?envType=study-plan-v2&envId=top-100-liked
|
||
// 322. 零钱兑换
|
||
//
|
||
// 给你一个整数数组 `coins` ,表示不同面额的硬币;以及一个整数 `amount` ,表示总金额。
|
||
// 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 `-1` 。
|
||
// 你可以认为每种硬币的数量是无限的。
|
||
// 示例 1:
|
||
// 输入:coins = `[1, 2, 5]`, amount = `11`
|
||
// 输出:`3`
|
||
// 解释:11 = 5 + 5 + 1
|
||
// 示例 2:
|
||
// 输入:coins = `[2]`, amount = `3`
|
||
// 输出:-1
|
||
// 示例 3:
|
||
// 输入:coins = [1], amount = 0
|
||
// 输出:0
|
||
//
|
||
// 提示:
|
||
// - `1 <= coins.length <= 12`
|
||
// - `1 <= coins[i] <= 2^31 - 1`
|
||
// - `0 <= amount <= 10^4`
|
||
//
|
||
func coinChange(coins []int, amount int) int {
|
||
|
||
}
|
||
|
||
func TestCoinChange(t *testing.T) {
|
||
cases := []struct {
|
||
name string
|
||
coins []int
|
||
amount int
|
||
want int
|
||
}{
|
||
{"example1", []int{1, 2, 5}, 11, 3},
|
||
{"example2", []int{2}, 3, -1},
|
||
{"example3", []int{1}, 0, 0},
|
||
}
|
||
for _, c := range cases {
|
||
t.Run(c.name, func(t *testing.T) {
|
||
got := coinChange(c.coins, c.amount)
|
||
if got != c.want {
|
||
t.Errorf("got %v, want %v", got, c.want)
|
||
}
|
||
})
|
||
}
|
||
}
|