Skip to content

Commit 39bb2ba

Browse files
added 4 sum same approach as 3 sum
1 parent f478dea commit 39bb2ba

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

18. 4Sum.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
};

0 commit comments

Comments
 (0)