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
+
1
3
/**
2
4
* @param {number[] } nums
3
5
* @return {number[][] }
@@ -25,3 +27,37 @@ var threeSum = function(nums) {
25
27
26
28
return Array . from ( result , str => str . split ( ',' ) . map ( Number ) ) ;
27
29
} ;
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