零钱兑换—leetcode322
生活随笔
收集整理的這篇文章主要介紹了
零钱兑换—leetcode322
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定不同面額的硬幣?coins?和一個(gè)總金額?amount。編寫一個(gè)函數(shù)來計(jì)算可以湊成總金額所需的最少的硬幣個(gè)數(shù)。如果沒有任何一種硬幣組合能組成總金額,返回?-1。
你可以認(rèn)為每種硬幣的數(shù)量是無限的。
示例?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完全平方數(shù)很類似的解法,動(dòng)態(tài)規(guī)劃,但也稍有不同,就是不知道硬幣的面值是多少,而完全平方數(shù)是已知組成和的值1、2、3.....的平方,所以遞推關(guān)系是稍有區(qū)別,具體的可以參考代碼
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];} };?
總結(jié)
以上是生活随笔為你收集整理的零钱兑换—leetcode322的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大正方形—leetcode221
- 下一篇: 找到字符串中所有字母异位词—leetco