Skip to content

Commit 711f2b7

Browse files
committedJan 5, 2023
Create 0018-4sum.js
1 parent 6a4e00c commit 711f2b7

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
 

‎javascript/0018-4sum.js

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number[][]}
5+
*/
6+
var fourSum = function (nums, target) {
7+
const sortedNums = nums.sort((a, b) => a - b);
8+
const res = [];
9+
const quad = [];
10+
11+
const kSum = (k, start, target) => {
12+
if (k > 2) {
13+
for (let i = start; i < sortedNums.length; i++) {
14+
if (i !== start && sortedNums[i] === sortedNums[i - 1]) {
15+
continue;
16+
}
17+
quad.push(sortedNums[i]);
18+
kSum(k - 1, i + 1, target - sortedNums[i]);
19+
quad.pop();
20+
}
21+
} else {
22+
let left = start;
23+
let right = sortedNums.length - 1;
24+
25+
while (left < right) {
26+
const sum = sortedNums[left] + sortedNums[right];
27+
if (sum < target) {
28+
left++;
29+
} else if (sum > target) {
30+
right--;
31+
} else {
32+
res.push(
33+
quad.concat([sortedNums[left], sortedNums[right]])
34+
);
35+
left++;
36+
while (
37+
left < right &&
38+
sortedNums[left] === sortedNums[left - 1]
39+
) {
40+
left++;
41+
}
42+
}
43+
}
44+
}
45+
};
46+
kSum(4, 0, target);
47+
return res;
48+
};

0 commit comments

Comments
 (0)