diff --git a/Problem1.java b/Problem1.java index e69de29b..26b0a8a6 100644 --- a/Problem1.java +++ b/Problem1.java @@ -0,0 +1,19 @@ +class Problem1 { + public int[] twoSum(int[] nums, int target) { + HashMap map = new HashMap<>(); + + for(int i = 0; i < nums.length; i++) { + map.put(nums[i], i); + } + + for (int i = 0; i < nums.length; i++) { + int cmp = target - nums[i]; + if (map.containsKey(cmp) && map.get(cmp) != i) { + return new int[]{map.get(cmp),i}; + } + map.put(nums[i], i); + } + + return new int[]{}; + } +} diff --git a/Problem2.java b/Problem2.java index e69de29b..bed97f87 100644 --- a/Problem2.java +++ b/Problem2.java @@ -0,0 +1,33 @@ +class Problem2 { + + public static int findMax(int[] weights, int[] profit, int totalCapacity) + { + int n = totalCapacity; + int m = weights.length; + int[][] dp = new int[m+1][n+1]; + + for(int i = 1; i <= m; i++ ) + { + for(int j = 1; j <= n ; j++) + { + if(weights[i-1] > j) + { + dp[i][j] = dp[i-1][j]; + }else { + dp[i][j] = Math.max(dp[i-1][j] , profit[i-1]+dp[i-1][j-weights[i-1]]); + } + } + } + return dp[m][n]; + + } + + public static void main(String args[]) + { + int[] items = {10,20,30,40}; + int[] profit = {130,110,170,190}; + int capacity = 50; + + System.out.println(findMax(items, profit, capacity)); + } +}