概述
给定一个整形数组,要求找出其中和为0的三个数的组合。比如:-1, 0, 1, 2, -1, -4, 则组合有{-1, -1, 2}和{-1, 0, 1}。要求结果中不能有重复,比如{-1, 2, -1}和{-1, -1, 2}重复。
#include <string>
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
set<vector<int> > find_triplets(vector<int> arr)
{
sort(arr.begin(), arr.end());
set<vector<int> > result;
vector<int> value(3);
int n = arr.size();
for (int i = 0; i < n; i++)
{
int j = i+1;
int k = n-1;
while (j < k)
{
int sum = arr[i] + arr[j] + arr[k];
if (sum < 0)
{
j++;
}
else if (sum > 0)
{
k--;
}
else
{
value[0] = arr[i];
value[1] = arr[j];
value[2] = arr[k];
result.insert(value);
j++;
k--;
}
}
}
return result;
}
最后
以上就是凶狠皮卡丘为你收集整理的查找和为0的三个数的全部内容,希望文章能够帮你解决查找和为0的三个数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复