零钱兑换—leetcode322
生活随笔
收集整理的這篇文章主要介紹了
零钱兑换—leetcode322
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定不同面額的硬幣?coins?和一個總金額?amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回?-1。
你可以認為每種硬幣的數量是無限的。
示例?1:
輸入:coins = [1, 2, 5], amount = 11 輸出:3 解釋:11 = 5 + 5 + 1示例 2:
輸入:coins = [2], amount = 3 輸出:-1示例 3:
輸入:coins = [1], amount = 0 輸出:0示例 4:
輸入:coins = [1], amount = 1 輸出:1示例 5:
輸入:coins = [1], amount = 2 輸出:2提示:
- 1 <= coins.length <= 12
- 1 <= coins[i] <= 231?- 1
- 0 <= amount <= 104
?
思路: 與leetcode279完全平方數很類似的解法,動態規劃,但也稍有不同,就是不知道硬幣的面值是多少,而完全平方數是已知組成和的值1、2、3.....的平方,所以遞推關系是稍有區別,具體的可以參考代碼
class Solution { public:int coinChange(vector<int>& coins, int amount) {int n = coins.size();vector<int> dp(amount+1, INT_MAX/2);dp[0] = 0;for(int i=1;i<=amount;++i){for(int j=0;j<n;++j){if(coins[j]<=i)dp[i] = min(dp[i],dp[i-coins[j]]+1);}}if(dp[amount]==INT_MAX/2)return -1;return dp[amount];} };?
總結
以上是生活随笔為你收集整理的零钱兑换—leetcode322的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大正方形—leetcode221
- 下一篇: 找到字符串中所有字母异位词—leetco