给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? 找出所有满足条件且不重复的三元组
解题思路
1、双指针法:我不会;
2、直接遍历法:利用三个for循环;找出三数之和等于零的数组;但是却没有实现怎么去掉重复的三元数组;
知识点
利用 vector 容器来定义二维数组以及赋值操作等;
代码实现
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) { // 引用:就是起的另一个外号
// 这定义的是一个二维数组
vector<vector<int>> ans;
int i,j,k;
if(nums.size()<2){
return {};
}
sort(nums.begin(), nums.end()); // 正向排序
for(i=0;i<nums.size()-2;i++){
for(j=i+1;j<nums.size()-1;j++){
for(k=j+1;k<nums.size();k++){
if(nums[i]+nums[j]+nums[k]==0){
ans.push_back(vector<int>{nums[i],nums[j],nums[k]});
}
}
}
}
return ans;
}
};
小结
不气馁,不要分心,多借鉴多看看别人写的代码,会找到思路的**