解题方案:用时击败了5%,内存击败了5% 哈哈哈哈哈哈哈
var threeSum = function(nums) {
var arr = new Set();// 用来给二维数组去重
nums.sort(function(a,b){return a-b}); // 给原数组排序
for(let i=0;i<nums.length-2;i++){
if(nums[i]>0) break; // 当最小项已经>0时,就可以跳出循环了
var j=i+1,z=nums.length-1; // 双指针
var result = 0 - nums[i];
while(j<z){
if(nums[j]+nums[z]==result){
arr.add(nums[i]+','+nums[j]+','+nums[z]); // 给Set对象中添加字符串,方便去重
j++;
z--;
}
if(nums[j]+nums[z]>result){
z--
}
if(nums[j]+nums[z]<result){
j++
}
}
}
var result = [];
arr.forEach(function(value){
result.push(value.split(',')) // 将字符串再变为数组
})
return result
};