Coin Change II (Leetcode 518)

Remember: This is Unbounded Knapsack pattern + Subsets pattern

Problem Link: https://leetcode.com/problems/coin-change-ii/

class Solution:
    def change(self, amount: int, coins: List[int]) -> int:
        
        n=len(coins)
        dp=[[0 for i in range(amount+1)] for j in range(n+1)]
        # Note the below two for loops.
        # That means, we cannot consider an empty set
        for i in range(n+1):
            dp[i][0]=1
        for i in range(amount+1):
            dp[0][i]=0
        for i in range(1,n+1):
            for j in range(1,amount+1):
                
                if(coins[i-1]<=j):
                    inc=dp[i][j-coins[i-1]]
                    exc=dp[i-1][j]
                    dp[i][j]=inc+exc
                else:
                    dp[i][j]=dp[i-1][j]
        return dp[n][amount]

Last updated