class Solution {
public:
struct Node
{
int val;
int index;
Node(){};
Node(int x,int idx):val(x),index(idx){}
};
static bool compare(Node l1,Node l2)
{
return l1.val<l2.val;
}
vector<int> twoSum(vector<int> &numbers, int target) {
vector<Node> vec;
for(int i=0;i<numbers.size();i++)
{
vec.push_back(Node(numbers[i],i+1));
}
sort(vec.begin(),vec.end(),compare);
int i=0;
int j=vec.size()-1;
vector<int> ret;
while(i<j)
{
int sum=vec[i].val+vec[j].val;
if(sum==target)
{
int minindex=min(vec[i].index,vec[j].index);
int maxindex=max(vec[i].index,vec[j].index);
ret.push_back(minindex);
ret.push_back(maxindex);
return ret;
}
else if(sum<target)
{
i++;
}
else j--;
}
}
};
public:
struct Node
{
int val;
int index;
Node(){};
Node(int x,int idx):val(x),index(idx){}
};
static bool compare(Node l1,Node l2)
{
return l1.val<l2.val;
}
vector<int> twoSum(vector<int> &numbers, int target) {
vector<Node> vec;
for(int i=0;i<numbers.size();i++)
{
vec.push_back(Node(numbers[i],i+1));
}
sort(vec.begin(),vec.end(),compare);
int i=0;
int j=vec.size()-1;
vector<int> ret;
while(i<j)
{
int sum=vec[i].val+vec[j].val;
if(sum==target)
{
int minindex=min(vec[i].index,vec[j].index);
int maxindex=max(vec[i].index,vec[j].index);
ret.push_back(minindex);
ret.push_back(maxindex);
return ret;
}
else if(sum<target)
{
i++;
}
else j--;
}
}
};