4Sum LeetCode solution in Java

1
class Solution {
2
public List<List<Integer>> fourSum(int[] nums, int target) {
3
Arrays.sort(nums);
4
List<List<Integer>> llans = new LinkedList<>();
5
if (nums == null || nums.length <= 2) {
6
return llans;
7
}
8
for (int i = 0; i < nums.length - 3; i++) {
9
for (int j = i + 1; j < nums.length - 2; j++) {
10
int l = j + 1;
11
int r = nums.length - 1;
12
long ressum = target - nums[i];
13
ressum = ressum - nums[j];
14
while (l < r) {
15
if (nums[l] + nums[r] == ressum) {
16
List<Integer> ll = new LinkedList<>();
17
ll.add(nums[i]);
18
ll.add(nums[j]);
19
ll.add(nums[l]);
20
ll.add(nums[r]);
21
llans.add(ll);
22

23
while (l < r && nums[l] == nums[l + 1]) {
24
l++;
25
}
26
while (l < r && nums[r] == nums[r - 1]) {
27
r--;
28
}
29
l++;
30
r--;
31
} else if (nums[l] + nums[r] < ressum) {
32
l++;
33
} else {
34
r--;
35
}
36
}
37
while (j < nums.length - 1 && nums[j] == nums[j + 1]) {
38
j++;
39
}
40
}
41
while (i < nums.length - 1 && nums[i] == nums[i + 1]) {
42
i++;
43
}
44
}
45
return llans;
46
}
47
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0