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+ // Hashmap Solution:
2+
13/**
24 * @param {number[] } nums
35 * @return {number[][] }
@@ -25,3 +27,37 @@ var threeSum = function(nums) {
2527
2628 return Array . from ( result , str => str . split ( ',' ) . map ( Number ) ) ;
2729} ;
30+
31+
32+ // Two Pointer Solution:
33+ var threeSum = function ( nums ) {
34+ nums . sort ( ( a , b ) => a - b ) ;
35+ let n = nums . length ;
36+ let answer = [ ] ;
37+
38+ for ( let i = 0 ; i < n ; i ++ ) {
39+ if ( nums [ i ] > 0 ) {
40+ break ;
41+ }
42+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) {
43+ continue ;
44+ }
45+ let lo = i + 1 , hi = n - 1 ;
46+ while ( lo < hi ) {
47+ let sum = nums [ i ] + nums [ lo ] + nums [ hi ] ;
48+ if ( sum === 0 ) {
49+ answer . push ( [ nums [ i ] , nums [ lo ] , nums [ hi ] ] ) ;
50+ lo ++ ;
51+ hi -- ;
52+ while ( lo < hi && nums [ lo ] === nums [ lo - 1 ] ) lo ++ ;
53+ while ( lo < hi && nums [ hi ] === nums [ hi + 1 ] ) hi -- ;
54+ } else if ( sum < 0 ) {
55+ lo ++ ;
56+ } else {
57+ hi -- ;
58+ }
59+ }
60+ }
61+
62+ return answer ;
63+ } ;
You can’t perform that action at this time.
0 commit comments