322. 零钱兑换 golang 动态规划
生活随笔
收集整理的這篇文章主要介紹了
322. 零钱兑换 golang 动态规划
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
給定不同面額的硬幣 coins 和一個總金額 amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。
示例 1:
輸入: coins = [1, 2, 5], amount = 11
輸出: 3
解釋: 11 = 5 + 5 + 1
示例 2:
輸入: coins = [2], amount = 3
輸出: -1
說明:
你可以認為每種硬幣的數量是無限的。
思路
leetcode_322子問題最優解分析
歸納方程:ret[i] = min(ret[i], ret[i-coins[j]] + 1)
代碼
func coinChange(coins []int, amount int) int {sort.Ints(coins)ret := make([]int, amount+1)for k,_:=range(ret){ret[k] = amount+1}ret[0] = 0for i:=1;i<=amount;i++{for j:=0;j<len(coins);j++{if i >= coins[j] {ret[i] = min(ret[i], ret[i-coins[j]] + 1)}}}if ret[amount] == amount+1{return -1}return ret[amount] }func min(a, b int) int{if a > b{return b}return a }總結
以上是生活随笔為你收集整理的322. 零钱兑换 golang 动态规划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML 5输入框只能输入汉字、字母、数
- 下一篇: 父爱如山剧情介绍