322.coin-change.go 387 B

12345678910111213141516171819202122
  1. func coinChange(coins []int, amount int) int {
  2. dp := make([]int, amount+1)
  3. for i := 1; i <= amount; i++ { // dp[0] is 0
  4. dp[i] = amount + 1
  5. }
  6. for _, coin := range coins {
  7. for i := coin; i <= amount; i++ {
  8. dp[i] = minInt(dp[i], dp[i-coin]+1)
  9. }
  10. }
  11. if amount < dp[amount] {
  12. return -1
  13. }
  14. return dp[amount]
  15. }
  16. func minInt(x, y int) int {
  17. if x < y {
  18. return x
  19. }
  20. return y
  21. }