// Problen 1 private static int[] twoSum(int[] arr, int target) { HashMap visited = new HashMap<>(); // num -> idx for (int i=0; i< arr.length; i++) { int required = target-arr[i]; if (visited.containsKey(required)) { return new int[] {visited.get(required), i}; } visited.put(arr[i], i); } return new int[] {-1,-1}; } // Problem 2 private static int maxProfit(int[] arr) { int minIdx = minPrice(arr); int cost = arr[minIdx]; int max = 0; for (int i=minIdx+1; i max) { max = profit; } } return max; } private static int minPrice(int[] arr) { int minIdx = 0; for (int i=1; i