Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- unordered_map<int, int> el;
- for (int i = 0; i < (int)nums.size(); ++i) {
- if (const auto it = el.find(target - nums[i]); it != el.end()) {
- return std::vector { it->second, i };
- }
- el[nums[i]] = i;
- }
- return std::vector<int> { -1 , -1 };
- }
- };
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- for (int i = 0; i < (int)nums.size(); ++i) {
- for (int j = i + 1; j < (int)nums.size(); ++j) {
- if (target == nums[i] + nums[j]) {
- return std::vector<int> {i, j};
- }
- }
- }
- return std::vector<int> { -1. -1};
- }
- };
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- const int num_el = nums.size();
- vector<pair<int, int>> el(nums.size());
- for (int i = 0; i < (int)nums.size(); ++i) {
- el[i] = { nums[i], i };
- }
- sort(el.begin(), el.end());
- for (int l = 0, r = num_el - 1; l < r;) {
- if (target == el[l].first + el[r].first) {
- return std::vector { el[l].second, el[r].second };
- } else if (target > el[l].first + el[r].first) {
- ++l;
- } else {
- --r;
- }
- }
- return std::vector {-1, -1};
- }
- };
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- const int num_el = nums.size();
- vector<pair<int, int>> el(nums.size());
- for (int i = 0; i < (int)nums.size(); ++i) {
- el[i] = { nums[i], i };
- }
- sort(el.begin(), el.end());
- for (int i = 0; i < num_el; ++i) {
- const auto it = lower_bound(el.begin() + i + 1, el.end(), {target - el[i].first, -1});
- if (it != el.end() && it->first == target - el[i].first) {
- return std::vector<int> { el[i].second, it->second };
- }
- }
- return std::vector<int> {-1, -1};
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement