/**
*
* @param num int整型一维数组
* @return int整型二维数组
*/
function threeSum(num) {
// write code here
num = num.sort((a, b) => { return a - b });
if (num.length < 3) {
return [];
}
let len = num.length;
let ans = [];
for (let i = 0; i < len - 2; ++i) {
if (num[i] > 0) {
break;
}
if (i > 0 && num[i] == num[i - 1]) {
continue;
}
let a = i, b = i + 1, c = len - 1;
while (b < c) {
let sum = num[a] + num[b] + num[c];
if (sum > 0) {
--c;
} else if (sum == 0) {
ans.push([num[a], num[b], num[c]]);
++b;
--c;
} else {
++b;
}
}
}
// 结果去重
let obj = {};
ans.map(item => {
obj[item] = item;
})
return Object.values(obj);
}
module.exports = {
threeSum: threeSum
};