/*
给你一个包含n个整数nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0?请你找出所有和为0且不重复的三元组。
注意:答案中不可以包含重复的三元组。
*/
//1.给数组排序(从小到大)
//2.遍历数组 从0开始 遍历 length-2?
//3、如果当前的数组等于前一个数字,就跳过这个数字(为了去重)
//4、设置三个指针 i start=i+1 end=nums.length-1
var arr=[1,2,3,-1,-4,-2,0,5,-5]
var threeSum =function(nums){
var result = [];
nums.sort(function(a,b){
return a-b;
});
for(var i=0; i<nums.length-2;i++){
if(i===0||nums[i]!==nums[i-1]){
var start =i+1;
var end =nums.length -1;
while(start<end){
if(nums[i]+nums[start]+nums[end]===0){
result.push([nums[i],nums[start],nums[end]])
start++;
end--;
while(start<end && nums[start]===nums[start -1]){
start++;
}
while(start<end && nums[start]===nums[start -1]){
end--;
}
}else if(nums[i]+nums[start]+nums[end]<0){
start++;
}else{
end --;
}
}
}
}
return result;
}
var res =threeSum(arr);
console.log(res);
你一个包含n个整数nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0?
最新推荐文章于 2024-08-04 16:33:59 发布