15. 3Sum
var threeSum = function(nums) {
const result = [];
const sortedNums = [...nums].sort((a, b) => a - b);
let left = 0;
let right = 0;
let sum = 0;
for(let i = 0; i < sortedNums.length - 2; i++){
if(i > 0 && sortedNums[i] === sortedNums[i - 1]) continue;
left = i + 1;
right = sortedNums.length - 1;
while(left < right){
sum = sortedNums[i] + sortedNums[left] + sortedNums[right]
if(sum < 0){
left += 1;
} else if(sum > 0){
right -= 1;
} else {
result.push([sortedNums[i], sortedNums[left], sortedNums[right]]);
while(left < right && sortedNums[left] === sortedNums[left+1]){
left += 1
}
while(left < right && sortedNums[right] === sortedNums[right-1]){
right -= 1
}
left += 1;
right -= 1;
}
}
}
return result;
};