#include <map>
#include <queue>
#include <set>
#include <algorithm>
using namespace std;
class Solution
{
public:
vector<vector<int>> threeSum(vector<int>& nums)
{
set<vector<int>> ress;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size();i++)
{
if(nums[i]>0)
break;
else
{
int target = 0-nums[i];
int head = i+1;
int tail = nums.size()-1;
while(head<tail)
{
if(nums[head]+nums[tail]==target)
{
ress.insert({nums[i],nums[head],nums[tail]});
while(head<tail && nums[head]==nums[head+1])
head++;
while(head<tail && nums[tail]==nums[tail-1])
tail--;
head++;tail--;
}
else if(nums[head]+nums[tail] >target )
tail--;
else
head++;
}
}
}
vector<vector<int>> res(ress.begin(),ress.end());
return res;
}
};
两头逼近
leetcode 三数之和
最新推荐文章于 2022-04-20 18:52:25 发布