动手刷LeetCode-三数之和问题


给定一个包含 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;
    }
};

小结

不气馁,不要分心,多借鉴多看看别人写的代码,会找到思路的**

发布了27 篇原创文章 · 获赞 2 · 访问量 1448

猜你喜欢

转载自blog.csdn.net/li_kin/article/details/104662073