Skip to content

Commit 16f8448

Browse files
update 15
1 parent 48a6112 commit 16f8448

File tree

2 files changed

+18
-12
lines changed
  • src
    • main/java/com/fishercoder/solutions/firstthousand
    • test/java/com/fishercoder/firstthousand

2 files changed

+18
-12
lines changed

src/main/java/com/fishercoder/solutions/firstthousand/_15.java

+11-12
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,36 @@
55
import java.util.List;
66

77
public class _15 {
8-
98
public static class Solution1 {
109
public List<List<Integer>> threeSum(int[] nums) {
1110
Arrays.sort(nums);
1211

1312
List<List<Integer>> result = new ArrayList<>();
14-
for (int i = 0; i < nums.length - 2; i++) {
15-
if (i >= 1 && nums[i] == nums[i - 1]) {
13+
for (int left = 0; left < nums.length - 2; left++) {
14+
if (left >= 1 && nums[left] == nums[left - 1]) {
1615
continue;
1716
}
18-
int left = i + 1;
17+
int mid = left + 1;
1918
int right = nums.length - 1;
20-
while (left < right) {
21-
int sum = nums[i] + nums[left] + nums[right];
19+
while (mid < right) {
20+
int sum = nums[left] + nums[mid] + nums[right];
2221
if (sum == 0) {
23-
result.add(Arrays.asList(nums[i], nums[left], nums[right]));
22+
result.add(Arrays.asList(nums[left], nums[mid], nums[right]));
2423

25-
while (left < right && nums[left] == nums[left + 1]) {
26-
left++;
24+
while (mid < right && nums[mid] == nums[mid + 1]) {
25+
mid++;
2726
}
2827

29-
while (left < right && nums[right] == nums[right - 1]) {
28+
while (mid < right && nums[right] == nums[right - 1]) {
3029
right--;
3130
}
3231
//these two lines are critical and easy to forget, if so, it'll TLE
33-
left++;
32+
mid++;
3433
right--;
3534
} else if (sum > 0) {
3635
right--;
3736
} else {
38-
left++;
37+
mid++;
3938
}
4039
}
4140
}

src/test/java/com/fishercoder/firstthousand/_15Test.java

+7
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,11 @@ public void test1() {
2929
assertEquals(expected, solution1.threeSum(nums));
3030
}
3131

32+
@Test
33+
public void test2() {
34+
nums = new int[]{1, 2, -2, -1};
35+
expected = new ArrayList<>();
36+
assertEquals(expected, solution1.threeSum(nums));
37+
}
38+
3239
}

0 commit comments

Comments
 (0)