给定一个包含 n 个整数的数组 nums
,判断 nums
中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]
思路:双指针
我的解答:
static int x = []{
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();
class Solution {
public:
vector<vector<int> > threeSum(vector<int>& nums)
{
if(nums.size()<3)return {};
vector<vector<int> > res;
vector<int> temp;
sort(nums.begin(),nums.end());
int len=nums.size();
for(int i=0;i<len-2;i++)
{
int j=i+1,k=len-1;
while(j<k)
{
if(nums[i]+nums[j]+nums[k]<0)
{
j++;
} else if(nums[i]+nums[j]+nums[k]>0)
{
k--;
} else
{
res.push_back({nums[i],nums[j],nums[k]});
j++;k--;
}
}
while(nums[i]==nums[i+1])
{
i++;
}
}
//sort(res.begin(),res.end());
res.erase(unique(res.begin(),res.end()),res.end());
return res;
}
};
#又好久没做题了啊,不行不行!!