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