1.题目
2.解法
①一维数组+动态规划
class Solution {
public int coinChange(int[] coins, int amount) {
int[] dp = new int[amount + 1];
Arrays.fill(dp, Integer.MAX_VALUE);
dp[0] = 0;
for(int i = 0; i < amount; i++){
if(dp[i] != Integer.MAX_VALUE){
for(int coin : coins){
if((long)i + coin <= amount){
if(dp[i] + 1 < dp[i + coin]) dp[i + coin] = dp[i] + 1;
}
}
}
}
if(dp[amount] == Integer.MAX_VALUE) return -1;
return dp[amount];
}
}