class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
vector<vector<int>> res;
sort(num.begin(),num.end());
for(auto i=num.begin();i!=num.end();i++){
if(i==num.begin()||*i!=*(i-1))
twoSum(i+1,num.end()-1,*i,res);
}
auto end_unique=unique(res.begin(),res.end());
res.erase(end_unique,res.end());
return res;
}
void twoSum(vector<int>::iterator i,vector<int>::iterator j,int sum,vector<vector<int>> &res)
{
while(i<j){
if(*i+*j+sum==0){
res.push_back(vector<int>{sum,*i,*j});
i++,j--;
}
else if(*i+*j+sum<0){
i++;
}
else{
j--;
}
}
}
};
LeetCode - 15 3Sum
最新推荐文章于 2022-02-10 12:14:07 发布