[编程题] lk 322. 零钱兑换
题目
输入输出
注意的问题
一开始我们默认把dp初始化为amount+1的值,当发现能更新的话就会更新掉这个值。
方法1:动态规划
class Solution {
public int coinChange(int[] coins, int amount) {
int[] dp = new int[amount+1];
//初始化为amount+1的初始值
Arrays.fill(dp, amount+1);
dp[0] = 0;
for(int i=1;i<=amount;i++){
for(int j=0;j<coins.length;j++){
if(coins[j]<=i){
dp[i] = Math.min(dp[i], dp[i-coins[j]]+1);
}
}
}
return dp[amount]>amount?-1:dp[amount];
}
}