-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathgorunov1.cpp
More file actions
35 lines (34 loc) · 1.1 KB
/
gorunov1.cpp
File metadata and controls
35 lines (34 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<vector<int>> threeSum(vector<int>& nums) {
auto nsize = nums.size();
if (nsize < 3) return vector<vector<int> >();
vector<vector<int> > output;
auto nbegin = nums.begin();
auto nend = nums.end();
sort(nbegin, nend);//, std::greater<int>());
do {
if (nums[nsize-1] + nums[nsize-2] + nums[nsize)-3] == 0){
vector<int> v = {nums[nsize-1], nums[nsize)-2], nums[nsize-3]};
auto vbegin = v.begin();
auto vend = v.end();
sort(vbegin,vend);
output.emplace_back(v);
}
}while ( next_permutation(nbegin,nend) );
auto obegin = output.begin();
auto oend = output.end();
sort(obegin, oend);
output.erase(unique(obegin, oend), oend);
return output;
};
int main(int argc, char* argv[]){
vector<int> input = {-1,0,1,2,-1,-4};
vector<vector<int> > res = threeSum(input);
auto rsize = res.size();
for (auto i = 0; i < rsize; i++){
cout << res[i][0] << " " << res[i][1] << " " << res[i][2] << "\n";
}
}