题解 | #找到满足条件的牛群组合#
找到满足条件的牛群组合
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;
}
};