# 322.CoinChange
// https://leetcode-cn.com/problems/coin-change/
/**
* @param {number[]} coins
* @param {number} amount
* @return {number}
*/
var coinChange = function (coins, amount) {
if (amount === 0) return 0;
var ans = -1;
var len = coins.length;
var cache = new Array(amount + 1);
cache = cache.fill(Number.MAX_VALUE);
cache[0] = 0;
for (var i = 1; i <= amount; i++) {
for (var j = 0; j < len; j++) {
if (i >= coins[j]) {
var cacheValue = cache[i - coins[j]];
if (cacheValue !== Number.MAX_VALUE && (cacheValue + 1 < cache[i]))
cache[i] = cacheValue + 1;
}
}
}
ans = cache[amount];
if (ans === Number.MIN_VALUE || ans === Number.MAX_VALUE || ans === 0) ans = -1;
return ans;
};