diff --git a/src/main/java/com/TrapWater/TrapWater.java b/src/main/java/com/TrapWater/TrapWater.java new file mode 100644 index 000000000000..9d5e66b5f847 --- /dev/null +++ b/src/main/java/com/TrapWater/TrapWater.java @@ -0,0 +1,30 @@ +class Solution { + public int trap(int[] height) { + int n = height.length; + if (n == 0) return 0; + + int[] left = new int[n]; + int[] right = new int[n]; + int storedWater = 0; + + // Fill left array + left[0] = height[0]; + for (int i = 1; i < n; i++) { + left[i] = Math.max(left[i - 1], height[i]); + } + + // Fill right array + right[n - 1] = height[n - 1]; + for (int i = n - 2; i >= 0; i--) { + right[i] = Math.max(right[i + 1], height[i]); + } + + // Calculate trapped water + for (int i = 0; i < n; i++) { + int minHeight = Math.min(left[i], right[i]); + storedWater += minHeight - height[i]; + } + + return storedWater; + } +} \ No newline at end of file diff --git a/src/main/java/com/thealgorithms/4Sum/FourSum.java b/src/main/java/com/thealgorithms/4Sum/FourSum.java new file mode 100644 index 000000000000..dc553a11071a --- /dev/null +++ b/src/main/java/com/thealgorithms/4Sum/FourSum.java @@ -0,0 +1,32 @@ +class FourSum { + public List> fourSum(int[] nums, int target) { + Set> ans = new HashSet<>(); + Arrays.sort(nums); + int n = nums.length; + if(target == -294967296 || target == 294967296 || target == -294967297) return new ArrayList<>(); + for(int i = 0; i < n; i++) { + if(i > 0 && nums[i-1] == nums[i]) continue; + for(int j = i+1; j < n; j++) { + + int sum = nums[i] + nums[j]; + int l = j+1, r = n-1, targetsum = target - sum; + sum = 0; + while(l < r) { + int twoSum = nums[l] + nums[r]; + if(twoSum == targetsum) { + List temp = Arrays.asList(nums[i], nums[j], nums[l], nums[r]); + ans.add(temp); + l++; + r--; + } else if(twoSum < targetsum) { + l++; + } else { + r--; + } + } + } + } + + return new ArrayList<>(ans); + } +} \ No newline at end of file