代码改变世界

leetcode - Two Sum

2013-10-14 10:52  张汉生  阅读(177)  评论(0编辑  收藏  举报

 

 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 };