給出一個(gè)有n個(gè)整數(shù)的數(shù)組S庆锦,在S中找到三個(gè)整數(shù)a, b, c辫继,找到所有使得a + b + c = 0的三元組。
注意事項(xiàng)
在三元組(a, b, c)锌半,要求a <= b <= c禽车。
結(jié)果不能包含重復(fù)的三元組。
您在真實(shí)的面試中是否遇到過(guò)這個(gè)題刊殉?
Yes
樣例
如S = {-1 0 1 2 -1 -4}, 你需要返回的三元組集合的是:
(-1, 0, 1)
(-1, -1, 2)
class Solution {
public:
/**
* @param numbers : Give an array numbers of n integer
* @return : Find all unique triplets in the array which gives the sum of zero.
*/
vector<vector<int> > threeSum(vector<int> &nums) {
// write your code here
vector<vector<int> > res_vector;
sort(nums.begin(),nums.end());
int len=nums.size();
for(int i=0;i<len-2;i++){
for(int j=i+1;j<len-1;j++){
for(int z=j+1;z<len;z++){
if((nums[i]+nums[j]+nums[z])==0){
vector<int> res;
res.push_back(nums[i]);
res.push_back(nums[j]);
res.push_back(nums[z]);
//res_vector.push_back(res);
auto it=find(res_vector.begin(),res_vector.end(),res);
if(it==res_vector.end()){
//沒(méi)有find 到
res_vector.push_back(res);
}
}
}
}
}
return res_vector;
}
};