public class Solution {
public int coinChange(int[] coins, int amount) {
if (coins == null || coins.length == 0) return 0;
int[] count = new int[amount + 1];
for (int i = 1; i <= amount; i++) {
count[i] = Integer.MAX_VALUE;
for (int j = 0; j < coins.length; j++) {
if (i >= coins[j] && count[i - coins[j]] != Integer.MAX_VALUE) {
count[i] = Math.min(count[i], 1 + count[i - coins[j]]);
}
}
}
if (count[amount] == Integer.MAX_VALUE) return -1;
return count[amount];
}
}