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