File tree Expand file tree Collapse file tree 3 files changed +38
-2
lines changed Expand file tree Collapse file tree 3 files changed +38
-2
lines changed Original file line number Diff line number Diff line change 1+ // complexity
2+ // time: O(n^2)
3+ // space: O(n)
4+
5+ var threeSum = function ( nums ) {
6+ const sortedNums = nums . sort ( ( a , b ) => a - b )
7+ const lengthOfArray = nums . length ;
8+ const answer = [ ] ;
9+
10+ for ( let i = 0 ; i < lengthOfArray ; i ++ ) {
11+ if ( i > 0 && nums [ i ] === nums [ i - 1 ] ) continue ;
12+ const target = ( - 1 ) * sortedNums [ i ] ;
13+
14+ let left = i + 1 ;
15+ let right = lengthOfArray - 1 ;
16+
17+ while ( left < right ) {
18+ const sumOfLeftAndRight = sortedNums [ left ] + sortedNums [ right ] ;
19+ const diff = sumOfLeftAndRight - target ;
20+
21+ if ( diff > 0 ) {
22+ right -= 1 ;
23+ } else if ( diff < 0 ) {
24+ left += 1
25+ } else {
26+ answer . push ( [ sortedNums [ i ] , sortedNums [ left ] , sortedNums [ right ] ] ) ;
27+ while ( left < right && sortedNums [ left ] === sortedNums [ left + 1 ] ) left ++ ;
28+ while ( left < right && sortedNums [ right ] === sortedNums [ right - 1 ] ) right -- ;
29+
30+ left ++ ;
31+ right -- ;
32+ }
33+ }
34+ }
35+ return answer
36+ } ;
Original file line number Diff line number Diff line change @@ -14,4 +14,4 @@ var climbStairs = function(n) {
1414 }
1515
1616 return num2 ;
17- } ;
17+ } ;
Original file line number Diff line number Diff line change 44
55var isAnagram = function ( s , t ) {
66 return s . split ( '' ) . sort ( ) . join ( '' ) === t . split ( '' ) . sort ( ) . join ( '' )
7- } ;
7+ } ;
You can’t perform that action at this time.
0 commit comments