Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. #include <algorithm>
  2. #include <unordered_set>
  3.  
  4. class Solution
  5. {
  6. public:
  7. vector<vector<int>> threeSum(vector<int>& nums)
  8. {
  9. vector<vector<int>> ret;
  10. unordered_set<unsigned long> retinas;
  11.  
  12. if (nums.size() < 3) return ret;
  13.  
  14. std::sort(nums.begin(), nums.end());
  15.  
  16. for (int i=0; i<nums.size()-2; i++)
  17. for (int j=i+1; j<nums.size()-1; j++)
  18. {
  19. int need = 0 - nums[i] - nums[j];
  20. auto it = std::lower_bound(nums.begin() + j+1, nums.end(), need);
  21. if (it != nums.end() && need == *it)
  22. {
  23. unsigned long retina = (((unsigned long)nums[i] & 0xFFFFFFFF) << 32) | (((unsigned long)nums[j] & 0xFFFFFFFF));
  24. if (retinas.find(retina) == retinas.end())
  25. {
  26. ret.push_back({nums[i], nums[j], need});
  27. retinas.insert(retina);
  28. }
  29. }
  30. }
  31.  
  32. return ret;
  33. }
  34. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement