Problem
You are given coins of different denominations and a total amount of money. Write a function to compute the number of combinations that make up that amount. You may assume that you have infinite number of each kind of coin.
Examples
1 | Input: amount = 5, coins = [1, 2, 5] |
1 | Input: amount = 3, coins = [2] |
1 | Input: amount = 10, coins = [10] |
Note
- 0 <= amount <= 5000
- 1 <= coin <= 5000
- the number of coins is less than 500
- the answer is guaranteed to fit into signed 32-bit integer
Solution1
Method: Recursive
Time Complexity:
Space Complexity:
1 | class Solution(object): |
or
1 | class Solution(object): |
Solution2
Method: Dynamic Programming
Time Complexity: O(mn)
Space Complexity: O(mn)
1 | class Solution(object): |
or
1 | class Solution(object): |