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.明確選擇 對於每個狀態,可以做出什麼選擇來改變當前狀態 選乙個...