中程度の変化

最初のレベルのタイトル

副題

両替

さまざまな金種のコインを表す整数配列のコインと、合計金額を表す整数の金額が与えられます。

合計金額を構成するために必要なコインの最小数を計算して返します。合計金額を構成するコインの組み合わせがない場合は、-1 を返します。

各コインの量は無限であると考えることができます。

例 1:

入力: コイン = [1, 2, 5]、金額 = 11 出力: 3 説明: 11 = 5 + 5 + 1 例 2:

入力: コイン = [2]、金額 = 3 出力: -1 例 3:

入力: コイン = [1]、金額 = 0 出力: 0

ヒント:

1 <= コイン.長さ <= 12 1 <= コイン[i] <= 231 - 1 0 <= 金額 <= 104

著者: LeetCode
リンク: https://leetcode-cn.com/leetbook/read/top-interview-questions-medium/xvf0kh/
出典: LeetCode

class Solution {
    
    
public:
    int coinChange(vector<int>& coins, int amount) {
    
    
       if(amount==0)
 			return 0;
		int *map=new int[amount+1];
        for(int i=0;i<amount+1;i++)
            map[i]=-1;
        for(int i=0;i<coins.size();i++)
        	if(coins[i]<=amount)
            	map[coins[i]]=1;
        map[0]=0;
        for(int i=1;i<amount+1;i++)
        {
    
    
        	int mon=10000;
            for(int j=0;j<coins.size();j++)
                if(i>=coins[j]&&map[i-coins[j]]!=-1)
                {
    
    
                    map[i]=min(mon,map[i-coins[j]]+1);
                    mon=map[i];
                }
   		}
	    if(map[amount])
	    	return map[amount];
	    return -1;

    }
};

おすすめ

転載: blog.csdn.net/BeiWoFW/article/details/124548044