File tree 2 files changed +18
-12
lines changed
main/java/com/fishercoder/solutions/firstthousand
test/java/com/fishercoder/firstthousand
2 files changed +18
-12
lines changed Original file line number Diff line number Diff line change 5
5
import java .util .List ;
6
6
7
7
public class _15 {
8
-
9
8
public static class Solution1 {
10
9
public List <List <Integer >> threeSum (int [] nums ) {
11
10
Arrays .sort (nums );
12
11
13
12
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 ]) {
16
15
continue ;
17
16
}
18
- int left = i + 1 ;
17
+ int mid = left + 1 ;
19
18
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 ];
22
21
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 ]));
24
23
25
- while (left < right && nums [left ] == nums [left + 1 ]) {
26
- left ++;
24
+ while (mid < right && nums [mid ] == nums [mid + 1 ]) {
25
+ mid ++;
27
26
}
28
27
29
- while (left < right && nums [right ] == nums [right - 1 ]) {
28
+ while (mid < right && nums [right ] == nums [right - 1 ]) {
30
29
right --;
31
30
}
32
31
//these two lines are critical and easy to forget, if so, it'll TLE
33
- left ++;
32
+ mid ++;
34
33
right --;
35
34
} else if (sum > 0 ) {
36
35
right --;
37
36
} else {
38
- left ++;
37
+ mid ++;
39
38
}
40
39
}
41
40
}
Original file line number Diff line number Diff line change @@ -29,4 +29,11 @@ public void test1() {
29
29
assertEquals (expected , solution1 .threeSum (nums ));
30
30
}
31
31
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
+
32
39
}
You can’t perform that action at this time.
0 commit comments