1.题目:
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
暴力解法:
(超出时间限制)
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
class Solution {
public:
bool equals(vector<int> p,vector<int> q)
{
for(int i=0;i<p.size();i++)
{
if(p[i]!=q[i])
return false;
}
return true;
}
vector<vector<int>> threeSum(vector<int>& nums)
{
vector<vector<int>> res;
if(nums.size()<3)
return res;
sort(nums.begin(),nums.begin()+nums.size());
// for(int i=0;i<nums.size()-1;i++)
// {
// while(nums[i]==nums[i+1])
// {
// for(int j=i+1;j<nums.size()-1;j++)
// nums[j]=nums[j+1];
// nums.pop_back();
// }
// }
for(int i=0;i<nums.size()-2;i++)
{
for(int j=i+1;j<nums.size()-1;j++)
{
for(int k=j+1;k<nums.size();k++)
{
if(nums[i]+nums[j]+nums[k]==0)
{
vector<int> temp;
temp.push_back(nums[i]);
temp.push_back(nums[j]);
temp.push_back(nums[k]);
int tag=1;
for(int i=0;i<res.size();i++)
{
if(equals(temp,res[i]))
{ tag=0;break;}
}
if(tag)
res.push_back(temp);
}
}
}
}
return res;
}
};
链接:两数之和