선택된 세 수가 서로 다른 경우일 때만 포함
-세 수의 합 == target값 인 경우에도 왼쪽(lo)값 ++를 기본값으로 설정
-중복 제거 : if(i>0 && nums[i]==nums[i-1]) continue / while(lo<hi && nums[lo]==nums[lo-1]) ++lo;
투포인터 풀이
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> res;
int n=nums.size();
sort(nums.begin(),nums.end());
for(size_t i=0;i<nums.size();++i)
{
if(i>0 && nums[i]==nums[i-1]) continue;
size_t lo=i+1;
size_t hi=n-1;
int tar=nums[i]*-1;
while(lo<hi)
{
int sum=nums[lo]+nums[hi];
if(sum<tar) ++lo;
else if(sum>tar)
{
--hi;
}
else
{
res.push_back(vector<int> {nums[i],nums[lo],nums[hi]});
lo++;
while(lo<hi && nums[lo]==nums[lo-1]) ++lo;
}
}
}
return res;
}