Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <algorithm>
- #include <iostream>
- using std::vector;
- int binary_search(vector<int>& nums, int& i,int target) {
- int min = i + 1;
- int max = nums.size()-1;
- while (min <= max) {
- int mid = (min + max) / 2;
- if (nums[i] + nums[mid] == target) {
- return mid;
- }
- if (nums[i] + nums[mid] > target) {
- max = mid - 1;
- }
- if (nums[i] + nums[mid] < target) {
- min = mid + 1;
- }
- }
- return -1;
- }
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- vector<int> nums1 = nums;
- sort(nums1.begin(),nums1.end());
- for (int i = 0; i < nums.size(); ++i)
- {
- int found = binary_search(nums1, i, target);
- if (found + 1){
- std::cout << nums1[found] << std::endl;
- std::cout << i << std::endl;
- for (int j = 0; j < nums.size(); ++j){
- if (nums[j] == nums1[found] && j != i){
- if (j > i)
- return {i, j};
- return {j, i};
- }
- }
- }
- }
- return {0};
- }
- };
- int main()
- {
- Solution s1;
- vector<int> v{3, 2, 4};
- auto vec = s1.twoSum(v,6);
- std::cout << "\n";
- for (auto &elem : vec)
- std::cout << elem << std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement