forked from neetcode-gh/leetcode
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0018-4sum.ts
43 lines (41 loc) · 1.42 KB
/
0018-4sum.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
functionfourSum(nums: number[],target: number): number[][]{
constsortedNums: number[]=nums.sort((a: number,b: number)=>a-b);
constres: number[][]=[];
constquad: number[]=[];
constkSum=(k: number,start: number,target: number): void=>{
if(k>2){
for(leti=start;i<sortedNums.length;i++){
if(i!==start&&sortedNums[i]===sortedNums[i-1]){
continue;
}
quad.push(sortedNums[i]);
kSum(k-1,i+1,target-sortedNums[i]);
quad.pop();
}
}else{
letleft: number=start;
letright: number=sortedNums.length-1;
while(left<right){
constsum=sortedNums[left]+sortedNums[right];
if(sum<target){
left++;
}elseif(sum>target){
right--;
}else{
res.push(
quad.concat([sortedNums[left],sortedNums[right]])
);
left++;
while(
left<right&&
sortedNums[left]===sortedNums[left-1]
){
left++;
}
}
}
}
};
kSum(4,0,target);
returnres;
}