fork(3) download
  1. #include <algorithm>
  2. #include <string>
  3. #include <iostream>
  4. #include <vector>
  5.  
  6. std::vector<std::vector<int>> threeSum(std::vector<int>& nums) {
  7. std::sort(nums.begin(), nums.end());
  8.  
  9. std::vector<std::vector<int>> res;
  10. for (auto it = nums.begin(); it != nums.end(); ++it) {
  11. auto left = it + 1;
  12. auto right = nums.rbegin();
  13. while (left < right.base()) {
  14. auto sum = *it + *left + *right;
  15. if (sum < 0) {
  16. ++left;
  17. } else if (sum > 0) {
  18. ++right;
  19. } else {
  20. res.push_back({*it, *left, *right});
  21. std::cout << *it << " " << *left << " " << *right << std::endl;
  22. ++left;
  23. ++right;
  24. }
  25. }
  26. }
  27. return res;
  28. }
  29.  
  30. int main()
  31. {
  32. std::vector<int> v {4, 2, -6, 42, -42, 0, 21, 21};
  33. threeSum(v);
  34. }
  35.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
-42 0 42
-42 21 21
-6 2 4