| 12345678910111213141516171819202122 | 
							- func coinChange(coins []int, amount int) int {
 
- 	dp := make([]int, amount+1)
 
- 	for i := 1; i <= amount; i++ { // dp[0] is 0
 
- 		dp[i] = amount + 1
 
- 	}
 
- 	for _, coin := range coins {
 
- 		for i := coin; i <= amount; i++ {
 
- 			dp[i] = minInt(dp[i], dp[i-coin]+1)
 
- 		}
 
- 	}
 
- 	if amount < dp[amount] {
 
- 		return -1
 
- 	}
 
- 	return dp[amount]
 
- }
 
- func minInt(x, y int) int {
 
- 	if x < y {
 
- 		return x
 
- 	}
 
- 	return y
 
- }
 
 
  |