var arr = [-1,0,1,2,-1,-4];
var result = [];
var obj = {};
var num = [];
arr.sort((a,b) => a - b); //[-4,-1,-1,0,1,2]
arr.forEach((item,index) => {
var value = 0 - item;
var i = 0;
var j = arr.length-1;
while(i < j){
// 如果value大于最大值,小于最小值,在这里面不会有结果
if(value < arr[i] || value > arr[j]) break;
else if(value > (arr[i] + arr[j])) i++;
else if(value < (arr[i] + arr[j])) j--;
else if(value == (arr[i] + arr[j])){
if(index != i && index != j){
var temp = [item,arr[i],arr[j]];
result.push(temp.sort());
}
i ++;
}
}
})
// 去重
result.forEach((item,index) => {
if(!obj[item]){
num.push(item);
obj[item] = item;
}
})
console.log(num); // [[-1, -1, 2],[-1, 0, 1]]
leetCode -- 三数之和
最新推荐文章于 2025-01-10 13:00:13 发布
4668

被折叠的 条评论
为什么被折叠?



