leetcode面試題 08 11 硬幣

2021-10-05 09:32:53 字數 1033 閱讀 2283

硬幣。給定數量不限的硬幣,幣值為25分、10分、5分和1分,編寫**計算n分有幾種表示法。(結果可能會很大,你需要將結果模上1000000007)

示例1:

輸入: n = 5

輸出:2

解釋: 有兩種方式可以湊成總金額:

5=55=1+1+1+1+1

示例2:

輸入: n = 10

輸出:4

解釋: 有四種方式可以湊成總金額:

10=10

10=5+5

10=5+1+1+1+1+1

10=1+1+1+1+1+1+1+1+1+1

說明:

注意:你可以假設:

0 <= n (總金額) <= 1000000

這道題很容易就能看出來是乙個揹包問題。每個物品有無限個,怎麼放進去揹包。但也很容易寫出錯誤**。

比如下面這種:

for

(int i =

1; i <= n; i++

)}

先遍歷數字情況,在遍歷硬幣,這麼做會有乙個問題:

假設我們有1元和5元硬幣。當我們需要組合出7元時候,這個程式會把(2+5)和(5+2)算成兩種,也就是說這麼沒辦法解決方案的順序問題。

正確的方法應該是先遍歷硬幣,回想揹包問題,我們無論哪種揹包,都是在最外層先遍歷每個物品的,內層是揹包容量。

在最外層遍歷硬幣,可以保證之後的硬幣不會再用到之前的硬幣,這麼就不會重複了。

public

intwaystochange

(int n)

;for

(int i =

0; i < coins.length; i++)}

return dp[n]

;}

leetcode 86/100

面試題 08 11 硬幣

硬幣。給定數量不限的硬幣,幣值為25分 10分 5分和1分,編寫 計算n分有幾種表示法。結果可能會很大,你需要將結果模上1000000007 示例1 輸入 n 5 輸出 2 解釋 有兩種方式可以湊成總金額 5 55 1 1 1 1 1 示例2 輸入 n 10 輸出 4 解釋 有四種方式可以湊成總金額...

面試題 08 11 硬幣 過

硬幣。給定數量不限的硬幣,幣值為25分 10分 5分和1分,編寫 計算n分有幾種表示法。結果可能會很大,你需要將結果模上1000000007 示例1 輸入 n 5 輸出 2 解釋 有兩種方式可以湊成總金額 5 55 1 1 1 1 1 和零錢兌換 ii的思路是一樣的,或者說基本上就是一道題 publ...

Leetcode 322 面試題08 11 湊硬幣

322.給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。面試題08.11.給定數量不限的硬幣,幣值為25分 10分 5分和1分,編寫 計算n分有幾種表示法。結果可能會很大,你需要將結果模...