mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
添加0322.零钱兑换 Go版本
This commit is contained in:
@ -211,7 +211,68 @@ Python:
|
|||||||
|
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
```go
|
||||||
|
// 版本一, 先遍历物品,再遍历背包
|
||||||
|
func coinChange1(coins []int, amount int) int {
|
||||||
|
dp := make([]int, amount+1)
|
||||||
|
// 初始化dp[0]
|
||||||
|
dp[0] = 0
|
||||||
|
// 初始化为math.MaxInt32
|
||||||
|
for j := 1; j <= amount; j++ {
|
||||||
|
dp[j] = math.MaxInt32
|
||||||
|
}
|
||||||
|
|
||||||
|
// 遍历物品
|
||||||
|
for i := 0; i < len(coins); i++ {
|
||||||
|
// 遍历背包
|
||||||
|
for j := coins[i]; j <= amount; j++ {
|
||||||
|
//if dp[j-coins[i]] != math.MaxInt32 {
|
||||||
|
// 推导公式
|
||||||
|
dp[j] = min(dp[j], dp[j-coins[i]]+1)
|
||||||
|
fmt.Println(dp,j,i)
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 没找到能装满背包的, 就返回-1
|
||||||
|
if dp[amount] == math.MaxInt32 {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return dp[amount]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 版本二,先遍历背包,再遍历物品
|
||||||
|
func coinChange2(coins []int, amount int) int {
|
||||||
|
dp := make([]int, amount+1)
|
||||||
|
// 初始化dp[0]
|
||||||
|
dp[0] = 0
|
||||||
|
// 遍历背包,从1开始
|
||||||
|
for j := 1; j <= amount; j++ {
|
||||||
|
// 初始化为math.MaxInt32
|
||||||
|
dp[j] = math.MaxInt32
|
||||||
|
// 遍历物品
|
||||||
|
for i := 0; i < len(coins); i++ {
|
||||||
|
if j >= coins[i] && dp[j-coins[i]] != math.MaxInt32 {
|
||||||
|
// 推导公式
|
||||||
|
dp[j] = min(dp[j], dp[j-coins[i]]+1)
|
||||||
|
//fmt.Println(dp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 没找到能装满背包的, 就返回-1
|
||||||
|
if dp[amount] == math.MaxInt32 {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return dp[amount]
|
||||||
|
}
|
||||||
|
|
||||||
|
func min(a, b int) int {
|
||||||
|
if a < b {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user