File tree Expand file tree Collapse file tree 2 files changed +3077
-0
lines changed
Expand file tree Collapse file tree 2 files changed +3077
-0
lines changed Original file line number Diff line number Diff line change 1+ // 15. 3Sum
2+ // https://leetcode.com/problems/3sum/
3+ export default function threeSum ( nums : number [ ] ) : number [ ] [ ] {
4+ const triplets : [ number , number , number ] [ ] = [ ] ;
5+
6+ nums . sort ( ( a , b ) => a - b ) ;
7+
8+ for ( let i = 0 ; i < nums . length - 2 ; ++ i ) {
9+ if ( nums [ i ] > 0 ) break ;
10+ if ( nums [ i ] === nums [ i - 1 ] ) continue ;
11+
12+ let left = i + 1 ;
13+ let right = nums . length - 1 ;
14+ let target = - nums [ i ] ;
15+
16+ while ( left < right ) {
17+ if ( nums [ left ] + nums [ right ] < target ) {
18+ while ( nums [ left + 1 ] === nums [ left ] ) {
19+ left += 1 ;
20+ }
21+
22+ left += 1 ;
23+
24+ continue ;
25+ }
26+
27+ if ( nums [ left ] + nums [ right ] > target ) {
28+ while ( nums [ right - 1 ] === nums [ right ] ) {
29+ right -= 1 ;
30+ }
31+
32+ right -= 1 ;
33+
34+ continue ;
35+ }
36+
37+ triplets . push ( [ nums [ i ] , nums [ left ] , nums [ right ] ] ) ;
38+
39+ while ( nums [ left + 1 ] === nums [ left ] ) {
40+ left += 1 ;
41+ }
42+
43+ while ( nums [ right - 1 ] === nums [ right ] ) {
44+ right -= 1 ;
45+ }
46+
47+ left += 1 ;
48+ right -= 1 ;
49+ }
50+ }
51+
52+ return triplets ;
53+ }
You can’t perform that action at this time.
0 commit comments