class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
vector<vector<int>>VEC;
sort(num.begin(),num.end());
if(num.size() < 3 || num[0] > 0||num[num.size()-1] < 0) return VEC;
for(int i = 0;i <num.size()-2;++i)
{
int j = i+1;
int k = num.size()-1;
if(i > 0 && num[i] ==num[i-1])continue;//去重
while(j < k)
{
if(num[i] + num[j] + num[k] == 0)
{
vector<int>tmp = {num[i],num[j],num[k]};
VEC.push_back(tmp);
while(j < k&&num[j] == num[j+1])j++;//去重
while(j < k&&num[k] == num[k-1])k--;
j++;
k--;
}
else if(num[i] + num[j]+num[k] > 0)k--;
else if(num[i] + num[j]+num[k] < 0)j++;
}
}
return VEC;
}
};
三数之和
最新推荐文章于 2023-12-17 22:48:59 发布