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