美文网首页
322.零钱兑换

322.零钱兑换

作者: 最尾一名 | 来源:发表于2020-03-08 10:38 被阅读0次

原题

https://leetcode-cn.com/problems/coin-change/

解题思路

用动态规划可以解。

dp[n] 表示用 coins 的硬币集,最少花费多少步能到达 n
dp[n] = min(dp[n-c0], dp[n-c1], ..., dp[n-c(n-1)])

代码

/**
 * @param {number[]} coins
 * @param {number} amount
 * @return {number}
 */
var coinChange = function(coins, amount) {
    const dp = new Array();
    dp.push(0);
    for (let i = 0; i < amount; ++i) {
        dp.push(amount + 1);
    }
    for (let i = 1; i  < amount + 1; ++i) {
        for (let j = 0; j < coins.length; ++j) {
            if (i >= coins[j]) {
                dp[i] = Math.min(dp[i], dp[i-coins[j]]+1);
            }
        }
    }
    return dp[amount] > amount ? -1 : dp[amount];
};

复杂度

  • 时间复杂度 O(S*N)
  • 空间复杂度 O(N)

相关文章

网友评论

      本文标题:322.零钱兑换

      本文链接:https://www.haomeiwen.com/subject/fgfddhtx.html