diff --git a/DeleteAndEarn.java b/DeleteAndEarn.java new file mode 100644 index 00000000..4a382226 --- /dev/null +++ b/DeleteAndEarn.java @@ -0,0 +1,28 @@ +// Time Complexity: O(n) +// space complexity: O(1) +class Solution { + public int deleteAndEarn(int[] nums) { + + int maxElement = Integer.MIN_VALUE; + for(int num: nums) { + maxElement = Math.max(num, maxElement); + } + + int[] arr = new int[maxElement+1]; + + for(int num: nums) { + arr[num] +=num; + } + + int prev = arr[0]; + int curr = arr[1]; + + for(int i = 2; i < arr.length; i++) { + int temp = curr; + curr = Math.max(curr, prev+arr[i]); + prev = temp; + } + + return curr; + } +} \ No newline at end of file diff --git a/HouseRobber.java b/HouseRobber.java new file mode 100644 index 00000000..0df2d3d4 --- /dev/null +++ b/HouseRobber.java @@ -0,0 +1,23 @@ +// Time Complexity: O(n) +// space complexity: O(n) +class Solution { + public int rob(int[] nums) { + + int n = nums.length; + + if(n ==1) { + return nums[0]; + } + + int[] dp = new int[nums.length]; + + dp[0] = nums[0]; + dp[1] = Math.max(nums[0], nums[1]); + + for(int i = 2; i < n; i++) { + dp[i] = Math.max(dp[i-1], dp[i-2]+nums[i]); + } + + return dp[n-1]; + } +} \ No newline at end of file