题解 | #找到满足条件的牛群组合#

找到满足条件的牛群组合

https://www.nowcoder.com/practice/8b9ba0f65fa0442b9808a24a18c6462d

知识点

双指针,STL

思路

首先,分析题意,我们需要找到符合和为target的不重复三元组。观测到数据范围为3000,所以与其说这题是双指针,不如说是三指针。 对于nums,我们可以使用i,j,k三个指针延续地依次指向数组中的数。对于符合:

nums[i]+nums[j]+nums[k]==target

的三元组,我们将其排序后放入set中去重。最后再遍历set,将答案存入vector中并返回。

代码c++

#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param target int整型 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > findThreeCows(vector<int>& nums, int target) {
        // write code here
        set<vector<int>>set;
        int n=nums.size();
        for(int i=0;i<n;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                for(int k=j+1;k<n;k++)
                {
                    if(nums[i]+nums[j]+nums[k]==target)
                    {
                        vector<int>t={nums[i],nums[j],nums[k]};
                        sort(t.begin(),t.end());
                        set.insert(t);

                    }
                }
            }
        }
        vector<vector<int>>ans;
        for(auto v:set)ans.push_back(v);
        return ans;
    }
};
全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务