문제 링크 : 3Sum
/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function(nums) {
const result = [], n = nums.length;
nums.sort()
const set = new Set();
for(let i=0; i<n; i++) {
const map = new Map();
for(let j=i+1; j<n; j++){
if( map.has(-nums[i]-nums[j]) && !set.has(`${[nums[i],-nums[i]-nums[j],nums[j]]}`)) {
result.push([nums[i],-nums[i]-nums[j],nums[j]]);
set.add(`${[nums[i],-nums[i]-nums[j],nums[j]]}`);
}
map.set(nums[j])
}
}
return result;
};
/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function(nums) {
nums.sort((a, b) => a - b);
let ans = [];
for (let i = 0; i < nums.length; i++) {
if (nums[i] > 0) break;
let target = -nums[i];
let _lp = i + 1, _rp = nums.length - 1;
while (_lp < _rp) {
if (nums[i] > 0) break;
let sum = nums[_lp] + nums[_rp];
if (sum === target) {
ans.push([nums[i], nums[_lp], nums[_rp]]);
while (nums[_lp + 1] === nums[_lp]) _lp++;
_lp++;
} else if (sum < target) {
_lp++;
} else _rp--;
}
while (nums[i + 1] === nums[i]) i++;
}
return ans;
};