15. 3Sum

解法一 

/**

* @param {number[]} nums

* @return {number[][]}

*/

 

var threeSum = function(nums) {

let number = [];

for(let i=0;i<nums.length-2;i++){

for(let j=i+1;j<nums.length-1;j++){

for(let m=j+1;m<nums.length;m++){

if(nums[i]+nums[j]+nums[m] === 0){

number.push([nums[i],nums[j],nums[m]]);

}

}

}

}

function compare(val1,val2){

return val1-val2;

};

for(let j=0; j<number.length;j++){

number[j].sort(compare);

}

for(let i=0;i<number.length-1;i++){

for(let j=i+1;j<number.length;j++){

if(number[i][0]===number[j][0] && number[i][1]===number[j][1] && number[i][2]===number[j][2]){

number.splice(i,1);

break;

}

}

}

return number;

};

console.log(threeSum([-1, 0, 1, 2, -1, -4]))

console.log(threeSum([0,0,0,0])) // 此处去重有问题

思路:先找出所有相加为0的情况,然后对其进行排序,之后去重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值