In this post, we are going to solve the 518. Coin Change 2 problem of Leetcode. This problem 518. Coin Change 2 is a Leetcode medium level problem. Let’s see the code, 518. Coin Change 2 – Leetcode Solution.
Problem
You are given an integer array coins
representing coins of different denominations and an integer amount
representing a total amount of money.
Return the number of combinations that make up that amount. If that amount of money cannot be made up by any combination of the coins, return 0
.
You may assume that you have an infinite number of each kind of coin.
The answer is guaranteed to fit into a signed 32-bit integer.
Example 1 :
Input: amount = 5, coins = [1,2,5]
Output: 4
Explanation: there are four ways to make up the amount:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
Example 2 :
Input: amount = 3, coins = [2]
Output: 0
Explanation: the amount of 3 cannot be made up just with coins of 2.
Example 3 :
Input: amount = 10, coins = [10]
Output: 1
Constraints
1 <= coins.length <= 300
1 <= coins[i] <= 5000
- All the values of
coins
are unique. 0 <= amount <= 5000
Now, let’s see the code of 518. Coin Change 2 – Leetcode Solution.
Coin Change 2 – Leetcode Solution
518. Coin Change 2 – Solution in Java
class Solution { public int solveTab(int amount, int[] coins){ int[] dp = new int[amount+1]; dp[0] = 1; for(int e:coins){ for(int i=1;i<=amount;i++){ if(i-e >= 0) dp[i] += dp[i-e]; } } return dp[amount]; } public int change(int amount, int[] coins) { return solveTab(amount,coins); } }
518. Coin Change 2 – Solution in C++
class Solution { public: int change(int amount, vector<int>& coins) { vector<int> dp(amount+1, 0); dp[0] = 1; for(int x: coins){ for(int i=x; i<=amount; i++) dp[i] += dp[i-x]; } return dp[amount]; } };
518. Coin Change 2 – Solution in Python
class Solution: def change(self, amount: int, coins: List[int]) -> int: DP = [1] + [0] * amount for coin in coins: for j in range(coin, amount + 1): DP[j] += DP[j - coin] return DP[-1]
Note: This problem 518. Coin Change 2 is generated by Leetcode but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.