Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<vector<int>> threeSum(vector<int> &nums) {
- vector<vector<int>> sums;
- unordered_map<int, vector<int>> allnums;
- for (int i = 0; i < nums.size(); i++) {
- auto t = allnums.find(nums[i]);
- if (t == allnums.end()) {
- allnums.emplace(make_pair(nums[i], vector<int>{i}));
- } else {
- t->second.emplace_back(i);
- }
- }
- for (int i = 0; i < nums.size(); i++) {
- for (int j = 0; j < nums.size(); j++) {
- if (i == j) {
- continue;
- }
- auto sum = nums[i] + nums[j];
- auto t = allnums.find(0 - sum);
- if (t == allnums.end()) {
- continue;
- }
- int flag = 0;
- for (auto &ind : t->second) {
- if (ind != i && ind != j) {
- flag = 1;
- }
- }
- if (flag) {
- auto a = vector<int>{nums[i], nums[j], t->first};
- sort(a.begin(), a.end());
- if (find(sums.begin(), sums.end(), a) == sums.end()) {
- sums.emplace_back(a);
- }
- }
- }
- }
- return sums;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement