1 class Solution {
2 public:
3 vector<int> twoSum(vector<int> &numbers, int target) {
4 // Note: The Solution object is instantiated only once and is reused by each test case.
5 int size = numbers.size();
6 vector<int> cp;
7 int i;
8 for (i=0; i<size; i++)
9 cp.push_back(numbers[i]);
10 sort(cp.begin(), cp.end());
11 int j=size-1;
12 i=0;
13 while (i<j){
14 int s = cp[i] + cp[j];
15 if (s>target)
16 j--;
17 else if (s<target)
18 i++;
19 else
20 break;
21 }
22 int a = cp[i], b=cp[j];
23 int index1=-1, index2=-1;
24 int remain=0;
25 for (i=0; i<size; i++){
26 if (index1==-1){
27 if (numbers[i]==a){
28 remain=b;
29 index1=i+1;
30 }
31 else if (numbers[i]==b){
32 remain =a ;
33 index1=i+1;
34 }
35 }
36 else if (numbers[i]==remain){
37 index2=i+1;
38 break;
39 }
40 }
41 vector<int> rlt;
42 rlt.push_back(index1);
43 rlt.push_back(index2);
44 return rlt;
45 }
46 };