leetcode15: https://leetcode-cn.com/problems/3sum/
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums)
{
vector<vector<int>> ret;
int n = nums.size();
if(n < 3)
{
return ret;
}
sort(nums.begin(),nums.end());
for(int i = 0;i<n;i++)
{
if(nums[i] > 0)
{
break;
}
if(i>0 && nums[i] == nums[i-1])
{
continue;
}
int L = i + 1;
int R = n - 1;
while(L < R)
{
int sum = nums[L] + nums[R] + nums[i];
if(sum == 0)
{
vector<int> temp;
temp.push_back(nums[i]);
temp.push_back(nums[L]);
temp.push_back(nums[R]);
ret.push_back(temp);
while(L < R &&nums[L] == nums[L+1])
{
L++;
}
while(L < R && nums[R] == nums[R-1])
{
R--;
}
L++;
R--;
}
else
{
if(sum < 0)
{
L++;
}
else
{
R--;
}
}
}
}
return ret;
}
};