File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change
1
+ function threeSum ( nums : number [ ] ) : number [ ] [ ] {
2
+ nums . sort ( ( a : number , b : number ) => a - b ) ;
3
+ const results : [ number , number , number ] [ ] = [ ] ;
4
+
5
+ for ( let i = 0 ; i < nums . length - 2 ; i ++ ) {
6
+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) continue ;
7
+
8
+ let left = i + 1 ;
9
+ let right = nums . length - 1 ;
10
+
11
+ while ( left < right ) {
12
+ const current = nums [ i ] + nums [ left ] + nums [ right ] ;
13
+ if ( current === 0 ) {
14
+ results . push ( [ nums [ i ] , nums [ left ] , nums [ right ] ] ) ;
15
+
16
+ while ( left < right && nums [ left ] === nums [ left + 1 ] ) left ++ ;
17
+ while ( left < right && nums [ right ] === nums [ right - 1 ] ) right -- ;
18
+
19
+ left ++ ;
20
+ right -- ;
21
+ } else if ( current < 0 ) {
22
+ left ++ ;
23
+ } else if ( current > 0 ) {
24
+ right -- ;
25
+ }
26
+ }
27
+ }
28
+
29
+ return results ;
30
+ }
You can’t perform that action at this time.
0 commit comments