{
const nums = [-1, 0, 1, 2, -1, -4];
const target = 0;
const arr = nums.sort((a,b)=>{
return a-b;
});
const sum = (...nums)=>{
return nums.reduce((pre,cur)=>{
return pre+cur;
},0);
}
const compute = (cur,left,right,result)=>{
if(left === right){
return;
}
const total = sum(arr[cur],arr[left],arr[right]);
if(total === target){
result.push([arr[cur],arr[left],arr[right]]);
return;
}
if(total < target){
compute(cur,left+1,right,result)
}else{
compute(cur,left,right-1,result)
}
}
let cur;
let left;
let right;
const result = [];
for(let i=0,len=arr.length;i<len-2;i++){
cur = i;
left = i+1;
right = len-1;
if(arr[cur]>target){
return;
}
compute(cur,left,right,result);
}
return result;
}