322. 零钱兑换 qaq

61 阅读1分钟

image.png

/**
 * @param {number[]} coins
 * @param {number} amount
 * @return {number}
 */
var coinChange = function (coins, amount) {

    //   用无限大填充数组,0 没办法比较,放进去也不影响
    let dp = new Array(amount + 1).fill(Infinity);
    dp[0] = 0;

    for (let i = 1; i <= amount; i++) {
        // 把公式循环
        for (let coin of coins) {
            // 现在的值 vs 循环出来的值
            if (i - coin >= 0) {
                //  公式 :dp[i]=Math.min(dp[i],dp[i-coin]+1)
                dp[i] = Math.min(dp[i], dp[i - coin] + 1);
            }
        }
    }

    // Infinity 表示 dp 没有参与循环,所以是 -1
    return dp[amount] === Infinity ? -1 : dp[amount];
}

image.png

322. 零钱兑换 - 力扣(LeetCode)

如果直接 除以 (从 5 到 2 到 1 ),然后向下取余

(未完待续…)