Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2020
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<int> twoSum(vector<int>& nums, int target) {
  4.         unordered_map<int, int> el;
  5.         for (int i = 0; i < (int)nums.size(); ++i) {
  6.             if (const auto it = el.find(target - nums[i]); it != el.end()) {
  7.                 return std::vector { it->second, i };
  8.             }
  9.             el[nums[i]] = i;
  10.         }
  11.         return std::vector<int> { -1 , -1 };
  12.     }
  13. };
  14.  
  15. class Solution {
  16. public:
  17.     vector<int> twoSum(vector<int>& nums, int target) {
  18.        for (int i = 0; i < (int)nums.size(); ++i) {
  19.            for (int j = i + 1; j < (int)nums.size(); ++j) {
  20.                if (target == nums[i] + nums[j]) {
  21.                    return std::vector<int> {i, j};
  22.                }
  23.            }
  24.        }
  25.        return std::vector<int> { -1. -1};
  26.     }
  27. };
  28.  
  29.  
  30. class Solution {
  31. public:
  32.     vector<int> twoSum(vector<int>& nums, int target) {
  33.         const int num_el = nums.size();
  34.         vector<pair<int, int>> el(nums.size());
  35.         for (int i = 0; i < (int)nums.size(); ++i) {
  36.             el[i] = { nums[i], i };
  37.         }
  38.         sort(el.begin(), el.end());
  39.         for (int l = 0, r = num_el - 1; l < r;) {
  40.             if (target == el[l].first + el[r].first) {
  41.                 return std::vector { el[l].second, el[r].second };
  42.             } else if (target > el[l].first + el[r].first) {
  43.                 ++l;
  44.             } else {
  45.                 --r;
  46.             }
  47.         }
  48.         return std::vector {-1, -1};
  49.     }
  50. };
  51.  
  52. class Solution {
  53. public:
  54.     vector<int> twoSum(vector<int>& nums, int target) {
  55.         const int num_el = nums.size();
  56.         vector<pair<int, int>> el(nums.size());
  57.         for (int i = 0; i < (int)nums.size(); ++i) {
  58.             el[i] = { nums[i], i };
  59.         }
  60.         sort(el.begin(), el.end());
  61.         for (int i = 0; i < num_el; ++i) {
  62.             const auto it = lower_bound(el.begin() + i + 1, el.end(), {target - el[i].first, -1});
  63.             if (it != el.end() && it->first == target - el[i].first) {
  64.                 return std::vector<int> { el[i].second, it->second };
  65.             }
  66.         }
  67.         return std::vector<int> {-1, -1};
  68.     }
  69. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement