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