LeetCode 零錢兌換

2022-06-24 09:24:10 字數 815 閱讀 1941

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

示例 1:

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

輸出: 3

解釋: 11 = 5 + 5 + 1

示例 2:

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

輸出: -1

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

a:第一反應是回溯我也是沒誰了……然後記憶體就限制了我。

public int coinchange(int coins, int amount) 

private void coin(int coins, int amount, int count, arraylistarray)

for (integer i : coins)

}}

好吧,老老實實用動態規劃dp

n=0:dp[n]=0;

n<0:dp[n]=-1;

n>0:if dp[n-coin]!=-1 dp[n]=min(dp[n-coin]+1)

public int coinchange(int coins, int amount) 

if (min != integer.max_value)

array[i] = min;}}

return array[amount];

}

零錢兌換 leetcode

思路 建乙個動態陣列dp,大小為amount 1,dp裡面的值初始化為amount 1。dp i 表示總金額i最少可以用dp i 的零錢兌換,如果coins j 比i小,那麼總金額i可以由dp i conis j 再加上這枚零錢構成,dp i min dp i dp i coins j 1 如果dp...

leetcode零錢兌換

1.遞迴 回溯 記錄每種錢幣能夠使用的最大數量,然後遍歷每一種情況,求錢幣數量最小的,但會超時 2.動態規劃 設定dp amount 1 初始值設為0x3f3f3f3f,即為無窮大 dp i 表示總量是i是,coins中的金幣組成i所需的最小金幣個數 此處以錢幣為1 2 5,總額是11舉例 dp 1...

leetCode 零錢兌換問題

零錢兌換問題 已知各種金幣面值costs i 每種面值可無限使用 求兌換出指定金額target的最小錢幣數。此題有dfs等的解法,這裡只介紹完全揹包的解法 先上狀態轉移方程 f i v 表示處理前i種錢幣時,剛好兌換面值為v時的錢幣數,則 f i v min 上述方程簡化為一維陣列實現 可參考我的揹...