此题新建一个含有两个变量的结构体,
代码
typedef struct Node
{
int id;
int val;
}Node;
bool compare(const Node &a, const Node &b)
{
return a.val < b.val;
}
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
vector<int> res;
int size = numbers.size();
if(size==0)
return res;
Node nodes[size];
for(int i = 0; i < size; ++i)
{
nodes[i].id = i+1;
nodes[i].val = numbers[i];
}
sort(nodes, nodes+size, compare);
int index1 = 0;
int index2 = size-1;
while(index1<index2)
{
int sum = nodes[index1].val+nodes[index2].val;
if(sum==target)
break;
if(sum>target)
index2--;
else
index1++;
}
if(nodes[index1].id < nodes[index2].id)
{
res.push_back(nodes[index1].id);
res.push_back(nodes[index2].id);
}
else
{
res.push_back(nodes[index2].id);
res.push_back(nodes[index1].id);
}
return res;
}
};