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