From 2a237fe670739b46eeac2a051fa8b5a4504e340f Mon Sep 17 00:00:00 2001 From: Joshua Yoon Date: Mon, 18 Oct 2021 17:02:15 -0500 Subject: [PATCH 1/3] Completed DP1 --- CoinChange.java | 24 ++++++++++++++++++++++++ HoseRobber2.java | 20 ++++++++++++++++++++ HouseRobber.java | 15 +++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 CoinChange.java create mode 100644 HoseRobber2.java create mode 100644 HouseRobber.java diff --git a/CoinChange.java b/CoinChange.java new file mode 100644 index 00000000..bfc46619 --- /dev/null +++ b/CoinChange.java @@ -0,0 +1,24 @@ +class CoinChange { + public int coinChange(int[] coins, int amount) { + int[][] dp = new int[coins.length + 1][amount + 1]; + + for (int i = 1; i <= amount; i++) { + dp[0][i] = amount + 1; + } + for (int i = 1; i <= coins.length; i++) { + dp[i][0] = 0; + } + for (int row = 1; row <= coins.length; row++) { + for (int col = 1; col <= amount; col++) { + if (col < coins[row - 1]) { + dp[row][col] = dp[row - 1][col]; + } else { + dp[row][col] = Math.min(dp[row - 1][col], dp[row][col - coins[row - 1]] + 1); + } + } + } + return dp[coins.length][amount] == amount + 1 ? -1 : dp[coins.length][amount]; + } +} + +// Time Complexity: n x m, Space: n x m \ No newline at end of file diff --git a/HoseRobber2.java b/HoseRobber2.java new file mode 100644 index 00000000..d50774e6 --- /dev/null +++ b/HoseRobber2.java @@ -0,0 +1,20 @@ +public class HoseRobber2 { + public int robber(int[] nums) { + int[][] dp = new int[nums.length + 1][2]; + dp[0][1] = 0; + dp[1][0] = 0; + int max = Integer.MIN_VALUE; + + for (int row = 1; row <= nums.length; row++) { + int notTaken = Math.max(dp[row - 1][0], dp[row - 1][1]); + int taken = dp[row - 1][0] + nums[row - 1]; + max = Math.max(max, Math.max(notTaken, taken)); + + dp[row][0] = notTaken; + dp[row][1] = taken; + } + + return max; + + } +} diff --git a/HouseRobber.java b/HouseRobber.java new file mode 100644 index 00000000..22383bf5 --- /dev/null +++ b/HouseRobber.java @@ -0,0 +1,15 @@ +public class HouseRobber { + public int rob(int[] nums) { + return helper(nums, 0); + } + + public int helper(int[] nums, int index) { + if (index >= nums.length) { + return 0; + } + int robbed = nums[index] + helper(nums, index + 2); + int notRobbed = helper(nums, index + 1); + return Math.max(robbed, notRobbed); + } + +} From f6d6c5b479c10032b93504335ec3cd3b11c5a164 Mon Sep 17 00:00:00 2001 From: Joshua Yoon Date: Mon, 15 Jun 2026 17:54:47 -0500 Subject: [PATCH 2/3] dp-1 commit --- CoinChange.java | 25 ++++++++++++++++++++++ HouseRobber.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 CoinChange.java create mode 100644 HouseRobber.java diff --git a/CoinChange.java b/CoinChange.java new file mode 100644 index 00000000..34ea419f --- /dev/null +++ b/CoinChange.java @@ -0,0 +1,25 @@ +public class CoinChange { + public int coinChange(int[] coins, int amount) { + int col = amount; + int[] dp = new int[col+1]; + for (int i=1; i amount -> num from above + if (coins[i-1] > j){ + dp[j] = dp[j]; + } + // get min of above and i-denomnination +1 + else{ + dp[j] = Math.min(dp[j],1+ dp[j-coins[i-1]]); + } + } + } + int ans = dp[col]; + if (ans > amount) return -1; + return ans; + } + +} diff --git a/HouseRobber.java b/HouseRobber.java new file mode 100644 index 00000000..b6ce878d --- /dev/null +++ b/HouseRobber.java @@ -0,0 +1,54 @@ +class HouseRobber { + //T = O(n) + //space = O(1) + public int rob(int[] nums) { + if (nums.length ==1) return nums[0]; + int n = nums.length; + // int[] dp = new int[n]; + int prev = nums[0]; + int curr = Math.max(nums[0],nums[1]); + for (int i=2; i= nums.length) return 0; + +// //logic +// int case0 = helper(nums, idx+1); +// int case1 = nums[idx] + helper(nums,idx+2); + +// return Math.max(case0, case1); +// } +// } \ No newline at end of file From b36bf8709b2fb6f3c75e13006a163947397fd3c8 Mon Sep 17 00:00:00 2001 From: Joshua Yoon Date: Mon, 15 Jun 2026 17:59:35 -0500 Subject: [PATCH 3/3] dp-1 new commit --- CoinChange.java | 1 + HoseRobber2.java | 1 + HouseRobber.java | 1 + 3 files changed, 3 insertions(+) diff --git a/CoinChange.java b/CoinChange.java index 34ea419f..b470ac53 100644 --- a/CoinChange.java +++ b/CoinChange.java @@ -1,4 +1,5 @@ public class CoinChange { + public int coinChange(int[] coins, int amount) { int col = amount; int[] dp = new int[col+1]; diff --git a/HoseRobber2.java b/HoseRobber2.java index d50774e6..2dd3978d 100644 --- a/HoseRobber2.java +++ b/HoseRobber2.java @@ -1,4 +1,5 @@ public class HoseRobber2 { + public int robber(int[] nums) { int[][] dp = new int[nums.length + 1][2]; dp[0][1] = 0; diff --git a/HouseRobber.java b/HouseRobber.java index b6ce878d..ae9872ff 100644 --- a/HouseRobber.java +++ b/HouseRobber.java @@ -1,5 +1,6 @@ class HouseRobber { //T = O(n) + //space = O(1) public int rob(int[] nums) { if (nums.length ==1) return nums[0];