Skip to content

Commit 35c853b

Browse files
solves 4 sum
1 parent 560d583 commit 35c853b

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
| 15 | [3Sum](https://leetcode.com/problems/3sum) | [![Java](assets/java.png)](src/ThreeSum.java) | |
2727
| 16 | [3Sum Closest](https://leetcode.com/problems/3sum-closest) | [![Java](assets/java.png)](src/ThreeSumClosest.java) | |
2828
| 17 | [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number) | [![Java](assets/java.png)](src/LetterCombinationsOfAPhoneNumber.java) | |
29+
| 18 | [4Sum](https://leetcode.com/problems/4sum) | [![Java](assets/java.png)](src/FourSum.java) | |
2930
| 20 | [ValidParentheses](https://leetcode.com/problems/valid-parentheses/) | [![Java](assets/java.png)](src/ValidParentheses.java) [![Python](assets/python.png)](python/valid_parentheses.py) | |
3031
| 21 | [Merge 2 Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/) | [![Java](assets/java.png)](src/Merge2SortedLists.java) [![Python](assets/python.png)](python/merge_2_sorted_lists.py) | |
3132
| 26 | [Remove Duplicates From Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/) | [![Java](assets/java.png)](src/RemoveDuplicatesFromSortedArray.java) [![Python](assets/python.png)](python/remove_duplicates_from_sorted_array.py) | |

src/FourSum.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashSet;
4+
import java.util.List;
5+
import java.util.Set;
6+
7+
public class FourSum {
8+
public List<List<Integer>> fourSum(int[] nums, int target) {
9+
Arrays.sort(nums);
10+
final Set<List<Integer>> quadruplets = new HashSet<>();
11+
12+
for (int a = 0 ; a < nums.length - 3 ; a++) {
13+
for (int b = a + 1 ; b < nums.length - 2 ; b++) {
14+
for (int c = b + 1, d = nums.length - 1 ; c < d ; ) {
15+
int sum = nums[a] + nums[b] + nums[c] + nums[d];
16+
if (sum == target) quadruplets.add(List.of(nums[a], nums[b], nums[c++], nums[d--]));
17+
else if (sum < target) c++;
18+
else d--;
19+
}
20+
}
21+
}
22+
23+
return new ArrayList<>(quadruplets);
24+
}
25+
}

0 commit comments

Comments
 (0)