mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
添加0322.零钱兑换 Go版本
This commit is contained in:
@ -211,7 +211,68 @@ Python:
|
||||
|
||||
|
||||
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