剑指 Offer II 103. 最少的硬币数目

114 阅读1分钟

剑指 Offer II 103. 最少的硬币数目

  • for (var i of arr) { 遍历钱数组arr
  • for (var j = i; j <= target; j++) {
  • 使用arr[i]凑出[ arr[i] , target ]这个区间面额的硬币个数
var coinChange = function (arr, target) {
    var dp = new Array(target + 1).fill(Infinity);
    dp[0] = 0;
    for (var i of arr) {
        for (var j = i; j <= target; j++) {
            dp[j] = Math.min(dp[j], dp[j - i] + 1);
        }
    }
    return dp[target] == Infinity ? -1 : dp[target];
};

代码调试

console.log(coinChange([2, 4, 5], 15));

image.png