1、leetcode 15
var threeSum = function(nums) {
//存放结果
let res =[];
//处理异常
if(nums.length<3){
return []
}
//先排序
nums.sort((a,b)=>a-b);
//先确定一个值 该值循环
for (let i = 0; i < nums.length; i++) {
//因为要求不能重复 所以去重
if(nums[i]==nums[i-1]) continue
//双指针 一个重前面开始 一个重后面开始
let left = i+1;
let right=nums.length-1;
//指针移动
while(left<right){
const sum = nums[i]+nums[left]+nums[right];
//情况1 找到结果
if(sum==0){
//直接push
res.push([nums[i],nums[left],nums[right]])
//不能直接break 让左右指针继续移动
//移动时 left和它的下一个一样 继续往下移
while(nums[left]==nums[left+1]){
left++
}
left++
//右边同理
while(nums[right]==nums[right-1]){
right--;
}
right--;
}else if(sum>0){
//情况2 和大于0 右指针向左
right--
}else if(sum<0){
//情况3 和小于0 左指针向右
left++
}
}
}
return res;
};