two sum
1 bool cmp(pair<int,int> a, pair<int,int> b ) 2 { 3 return a.first <= b.first; 4 } 5 class Solution { 6 public: 7 vector<int> twoSum(vector<int> &numbers, int target) { 8 // Start typing your C/C++ solution below 9 // DO NOT write int main() function 10 vector<int> res; 11 if( numbers.size() < 2 ) return res; 12 13 vector< pair<int,int> > v(numbers.size(), pair<int,int>(0,0)); 14 for(int i=0;i<numbers.size();i++) 15 { 16 v[i].first = numbers[i]; 17 v[i].second = i+1; 18 } 19 sort(v.begin(),v.end(),cmp); 20 int left = 0, right = numbers.size() - 1; 21 while( left < right ) 22 { 23 if( v[left].first + v[right].first == target ) 24 { 25 res.push_back( min(v[left].second , v[right].second) ); 26 res.push_back( max(v[left].second , v[right].second) ); 27 return res; 28 } 29 else if( v[left].first + v[right].first < target ) 30 left ++; 31 else 32 right --; 33 } 34 return res; 35 } 36 };
posted on 2013-09-04 10:03 jumping_grass 阅读(221) 评论(0) 收藏 举报
浙公网安备 33010602011771号