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