解题思路
非常典型的DP
提交代码
class Solution {
public int coinChange(int[] coins, int amount) {
if(amount==0) return 0;
for(int coin : coins)
if(amount==coin) return 1;
int[] cnt=new int[amount];
for(int i=0;i<amount;i++) {
cnt[i]=Integer.MAX_VALUE;
for(int coin:coins) {
if(i+1<coin) continue;
else if(i+1==coin) {
cnt[i]=1;
continue;
}else {
if(cnt[i-coin]==Integer.MAX_VALUE) continue;
cnt[i]=Math.min(cnt[i], cnt[i-coin]+1);
}
}
}
return cnt[amount-1]==Integer.MAX_VALUE?-1:cnt[amount-1];
}
}