Skip to content

Commit 454c4e0

Browse files
committed
Added task 15.
1 parent 4c1f088 commit 454c4e0

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

Diff for: src/main/java/s0015.three.sum/Solution.java

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package s0015.three.sum;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
public class Solution {
8+
public List<List<Integer>> threeSum(int[] nums) {
9+
Arrays.sort(nums);
10+
final int len = nums.length;
11+
List<List<Integer>> result = new ArrayList<>();
12+
int l = 0, r = 0;
13+
for (int i = 0; i < len - 2; i++) {
14+
l = i + 1;
15+
r = len - 1;
16+
while (r > l) {
17+
int sum = nums[i] + nums[l] + nums[r];
18+
if (sum < 0) {
19+
l++;
20+
} else if (sum > 0) {
21+
r--;
22+
} else {
23+
List<Integer> list = new ArrayList<>();
24+
list.add(nums[i]);
25+
list.add(nums[l]);
26+
list.add(nums[r]);
27+
result.add(list);
28+
while (l < r && nums[l + 1] == nums[l]) {
29+
l++;
30+
}
31+
while (r > l && nums[r - 1] == nums[r]) {
32+
r--;
33+
}
34+
l++;
35+
r--;
36+
}
37+
}
38+
while (i < len - 1 && nums[i + 1] == nums[i]) {
39+
i++;
40+
}
41+
}
42+
return result;
43+
}
44+
}

Diff for: src/test/java/s0015.three.sum/SolutionTest.java

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package s0015.three.sum;
2+
3+
import static org.hamcrest.CoreMatchers.equalTo;
4+
import static org.hamcrest.MatcherAssert.assertThat;
5+
6+
import org.junit.Test;
7+
8+
public class SolutionTest {
9+
@Test
10+
public void threeSum() {
11+
assertThat(
12+
new Solution().threeSum(new int[] {-1, 0, 1, 2, -1, -4}).toString(),
13+
equalTo("[[-1, -1, 2], [-1, 0, 1]]"));
14+
}
15+
}

0 commit comments

Comments
 (0)