LC322 零錢兌換

2021-10-20 23:52:46 字數 874 閱讀 7220

322. 零錢兌換

難度中等1087

給定不同面額的硬幣coins和乙個總金額amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回-1

你可以認為每種硬幣的數量是無限的。

示例 1:

輸入:coins = [1, 2, 5], amount = 11

輸出:3

解釋:11 = 5 + 5 + 1

示例 2:

輸入:coins = [2], amount = 3

輸出:-1

動態規劃:詳細題解

class

solution

// memo[n]的值: 表示的湊成總金額為n所需的最少的硬幣個數

int[

] memo =

newint

[amount +1]

;//給memo賦值,最多的硬幣數就是全部使用面值為1的硬幣進行換

//amont+1 是不可能達到的換取數量,,於是使用其進行填充

arrays.

fill

(memo, amount +1)

; memo[0]

=0;for

(int i =

1; i <= amount; i++)}

}return memo[amount]

==(amount +1)

?-1: memo[amount];}

}

LC322 零錢兌換

322.零錢兌換 難度中等1078 給定不同面額的硬幣coins和乙個總金額amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。你可以認為每種硬幣的數量是無限的。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋...

322 零錢兌換

class solution 不是大的取的越多越好,大的取的很多,最後不能剛好取到,比如22,陣列是10,6,你直接取兩個10肯定不行第乙個數有取1個,取0個或者取多個好幾種取法。比如18,你有10和6,那麼10乙個都不能取 所以要考慮的只是當前這一位可以取幾個 for int i left coi...

322 零錢兌換

最值問題 最優子結構特性 子問題重疊特性 使用動態規劃 狀態轉移方程 列出狀態轉移方程 步驟 1.明確狀態 原問題和子問題中變化的量 amount 連續性變化 2.定義動態規劃陣列 函式的含義 dp n 的含義 湊成n需要的硬幣個數 3.明確選擇 對於每個狀態,可以做出什麼選擇來改變當前狀態 選乙個...