- 使用动态规划 时间复杂度为O(amount*n) 空间复杂度为O(amount)
public int coinChange(int[] coins, int amount) {
if(amount==0){
return 0;
}
int[] ans=new int[amount+1];
ans[0]=0;
for(int i=1;i<ans.length;i++){
int cost=Integer.MAX_VALUE;
//循环比较
for(int j=0;j<coins.length;j++){
if(i-coins[j]>=0){
//判断前一个是否越界
if(ans[i-coins[j]]!=Integer.MAX_VALUE){
//取最小值
cost=Math.min(cost,ans[i-coins[j]]+1);
}
}
}
ans[i]=cost;
}
return ans[amount]!=Integer.MAX_VALUE?ans[amount]:-1;
}