From e73784fb33f2f61fcf56b3f4fd7e32f4b40729d6 Mon Sep 17 00:00:00 2001 From: Bharath Vuppala Date: Fri, 10 Jan 2025 11:46:33 -0800 Subject: [PATCH 1/2] 2 problems completed --- Coin Change II .py | 18 ++++++++++++++++++ Paint House.py | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 Coin Change II .py create mode 100644 Paint House.py diff --git a/Coin Change II .py b/Coin Change II .py new file mode 100644 index 00000000..e66e4089 --- /dev/null +++ b/Coin Change II .py @@ -0,0 +1,18 @@ +class Solution: + def change(self, amount: int, coins: List[int]) -> int: + if coins == None or len(coins)==0: + return 0 + + n= len(coins) + dp=[[0]*(amount+1) for _ in range (n+1)] + + for i in range (1,n+1): + dp[i][0]=1 + + for i in range (1,n+1): + for j in range (1, amount+1): + if j< coins[i-1]: + dp[i][j]= dp[i-1][j] + else: + dp[i][j]= dp[i-1][j] + dp[i][j-coins[i-1]] + return dp[n][amount] diff --git a/Paint House.py b/Paint House.py new file mode 100644 index 00000000..5252cea0 --- /dev/null +++ b/Paint House.py @@ -0,0 +1,19 @@ +class Solution: + def minCost(self, costs: List[List[int]]) -> int: + + n = len(costs) + + + dp = [[0] * 3 for _ in range(n)] + dp[n-1][0] = costs[n-1][0] + dp[n-1][1] = costs[n-1][1] + dp[n-1][2] = costs[n-1][2] + + + for i in range(n-2, -1, -1): + dp[i][0] = costs[i][0] + min(dp[i+1][1], dp[i+1][2]) + dp[i][1] = costs[i][1] + min(dp[i+1][0], dp[i+1][2]) + dp[i][2] = costs[i][2] + min(dp[i+1][0], dp[i+1][1]) + + + return min(dp[0][0], dp[0][1], dp[0][2]) From d4df614afe20bf7ad9a6734e5befe7638730086f Mon Sep 17 00:00:00 2001 From: BharathVuppala96 Date: Fri, 2 Jan 2026 17:57:45 -0800 Subject: [PATCH 2/2] 2 problems completed --- Coin Change II .py | 18 ------------------ Coin Change II.py | 19 +++++++++++++++++++ Paint House.py | 22 ++++++---------------- 3 files changed, 25 insertions(+), 34 deletions(-) delete mode 100644 Coin Change II .py create mode 100644 Coin Change II.py diff --git a/Coin Change II .py b/Coin Change II .py deleted file mode 100644 index e66e4089..00000000 --- a/Coin Change II .py +++ /dev/null @@ -1,18 +0,0 @@ -class Solution: - def change(self, amount: int, coins: List[int]) -> int: - if coins == None or len(coins)==0: - return 0 - - n= len(coins) - dp=[[0]*(amount+1) for _ in range (n+1)] - - for i in range (1,n+1): - dp[i][0]=1 - - for i in range (1,n+1): - for j in range (1, amount+1): - if j< coins[i-1]: - dp[i][j]= dp[i-1][j] - else: - dp[i][j]= dp[i-1][j] + dp[i][j-coins[i-1]] - return dp[n][amount] diff --git a/Coin Change II.py b/Coin Change II.py new file mode 100644 index 00000000..694d92c9 --- /dev/null +++ b/Coin Change II.py @@ -0,0 +1,19 @@ +class Solution: + def change(self, amount: int, coins: List[int]) -> int: + m=len(coins) + n=amount + + dp = [[0] * (n + 1) for _ in range(m + 1)] + + for i in range(1,m+1): + dp[i][0]=1 + print(dp) + + for i in range(1,m+1): + for j in range(1,n+1): + if j int: - - n = len(costs) + n=len(costs) - - dp = [[0] * 3 for _ in range(n)] - dp[n-1][0] = costs[n-1][0] - dp[n-1][1] = costs[n-1][1] - dp[n-1][2] = costs[n-1][2] - - - for i in range(n-2, -1, -1): - dp[i][0] = costs[i][0] + min(dp[i+1][1], dp[i+1][2]) - dp[i][1] = costs[i][1] + min(dp[i+1][0], dp[i+1][2]) - dp[i][2] = costs[i][2] + min(dp[i+1][0], dp[i+1][1]) - - - return min(dp[0][0], dp[0][1], dp[0][2]) + for i in range(n-2,-1,-1): + costs[i][0]=costs[i][0]+min(costs[i+1][1],costs[i+1][2]) + costs[i][1]=costs[i][1]+min(costs[i+1][0],costs[i+1][2]) + costs[i][2]=costs[i][2]+min(costs[i+1][1],costs[i+1][0]) + return min(costs[0][1],min(costs[0][0],costs[0][2])) \ No newline at end of file