给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。
var threeSum = function(nums) {
nums = nums.sort();
var tmpArr = [];
for (var i = 0, len = nums.length; i <len; i++) {
for (var j = i+1;j <len;j++) {
var tmp = 0 - (nums[i] + nums[j]);
for (var k = j + 1; k < len; k++) {
if (nums[k] === tmp) {
tmpArr.push([nums[i], nums[j], nums[k]]);
}
}
}
}
// 去重处理
var output = [], len = tmpArr.length;
if (len > 0) {
output.push(tmpArr[0]);
}
NEXT: for (let i = 1; i <len; i++) {
let item = tmpArr[i].toString();
for (let j = 0; j < i; j++) {
if (tmpArr[j].toString() === item) {
continue NEXT;
}
}
output.push(tmpArr[i]);
}
return output;
};
~~ 问题:
题目中要求答案中不可以包含重复的三元组
但实际还没有去重,等待解决。 ~~
没法做到一次性解决,最后只能单独去重。