-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path_18_4Sum.java
More file actions
43 lines (35 loc) · 1.21 KB
/
Copy path_18_4Sum.java
File metadata and controls
43 lines (35 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package io.github.tahanima.leetcode;
import java.util.*;
/**
* @author tahanima
*/
public class _18_4Sum {
public List<List<Integer>> fourSum(int[] nums, int target) {
int n = nums.length;
Arrays.sort(nums);
HashSet<ArrayList<Integer>> hs = new HashSet<>();
for (int i = 0; i <= n - 4; i++) {
for (int j = i + 1; j <= n - 3; j++) {
int lo = j + 1, hi = n - 1;
while (lo < hi) {
long sum = (long)nums[i] + (long)nums[j] + nums[lo] + nums[hi];
if (sum == target) {
ArrayList<Integer> quadruplet = new ArrayList<>();
quadruplet.add(nums[i]);
quadruplet.add(nums[j]);
quadruplet.add(nums[lo]);
quadruplet.add(nums[hi]);
Collections.sort(quadruplet);
hs.add(quadruplet);
lo++;
} else if (sum < target) {
lo++;
} else {
hi--;
}
}
}
}
return new ArrayList<>(hs);
}
}