function threeSum(nums) {
nums.sort((a, b) => a - b);
var res = [];
if (nums.length < 3 || nums[0] > 0 || nums[nums.length - 1] < 0) {
return res;
}
for (var i = 0; i < nums.length; i++) {
if (i > 0 && nums[i] == nums[i - 1]) {
continue;
}
twoSum(nums, i, res);
}
// console.log(res);
return res;
}
function twoSum(nums, start, res) {
var l = start + 1,
r = nums.length - 1;
while (l < r) {
var sum = nums[start] + nums[l] + nums[r];
if (sum == 0) {
var temp = [nums[start], nums[l], nums[r]];
res.push(temp);
//去重
while (l < r && nums[l] == nums[l + 1]) l++;
while (l < r && nums[r] == nums[r - 1]) r--;
l++;
r--;
} else if (sum > 0) {
r--;
} else if (sum < 0) {
l++;
}
}
}