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