leetcode 322 零錢兌換

2021-10-01 19:02:44 字數 632 閱讀 3521

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

示例 1:

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

輸出: 3 

解釋: 11 = 5 + 5 + 1

示例 2:

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

輸出: -1

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

思路: 剛開始每次想著,取最大,再遞迴深入,但是有些case不能通過。用了貪心,每次貪最大,但是不能組成整數。

證明區域性最優,不能解決,必須是全域性最優才行。所以,表示式為

f(n) =  }
dp先初始化,amount + 1.  為什麼?因為,math.min(dp[i],dp[i-c]+1).dp[i]可能為0,取最小即為0.所以結果不對。

但是dp[0]必須初始化為0.

class solution  else }}

return dp[amount] == amount+1?-1:dp[amount];

}}

leetcode322 零錢兌換

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11輸出 3解釋 11 5 5 1 示例 2 輸入 coins 2 amount 3...

leetcode 322 零錢兌換

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1示例 2 輸入 coins 2 amount ...

LeetCode 322 零錢兌換

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