1 #include<vector>
2 #include<iostream>
3 #include<algorithm>
4 using namespace std;
5
6 struct Node
7 {
8 int num;
9 int index;
10 };
11
12 class Solution {
13 public:
14 vector<int> twoSum(vector<int> &numbers, int target) {
15 vector<Node> data;
16 vector<int> result;
17
18 for(int i=0;i!=numbers.size();++i)
19 {
20 Node node;
21 node.num=numbers[i];
22 node.index=i+1;
23 data.push_back(node);
24 }
25
26 sort(data.begin(),data.end(),[](const Node &a,const Node &b){return a.num<=b.num;});
27
28 int i=0,j=numbers.size()-1;
29
30 while(i!=j)
31 {
32 int sum=data[i].num+data[j].num;
33
34 if(sum<target)
35 {
36 ++i;
37 }
38 else if(sum>target)
39 {
40 --j;
41 }
42 else
43 {
44 break;
45 }
46 }
47
48 if(data[i].index>data[j].index){
49 result.push_back(data[j].index);
50 result.push_back(data[i].index);
51 }
52 else
53 {
54 result.push_back(data[i].index);
55 result.push_back(data[j].index);
56 }
57
58 return result;
59 }
60 };