LeetCode Two Sum

// 20ms
1
struct Node 2 { 3 int num; 4 int pos; 5 }; 6 bool cmp(const Node &a,const Node &b) 7 { 8 return a.num<b.num; 9 } 10 class Solution { 11 public: 12 vector<int> twoSum(vector<int> &numbers, int target) { 13 // Start typing your C/C++ solution below 14 // DO NOT write int main() function 15 vector<Node> v; 16 Node node; 17 vector<int>::iterator p; 18 vector<int> re; 19 int i=1,j; 20 for(p=numbers.begin();p!=numbers.end();p++) 21 { 22 node.pos=i; 23 i++; 24 node.num=*p; 25 v.push_back(node); 26 } 27 sort(v.begin(),v.end(),cmp); 28 i=0; 29 j=v.size()-1; 30 while(1) 31 { 32 if(v[i].num+v[j].num==target) 33 { 34 break; 35 } 36 else if(v[i].num+v[j].num<target) 37 { 38 i++; 39 } 40 else 41 { 42 j--; 43 } 44 } 45 re.push_back(v[i].pos); 46 re.push_back(v[j].pos); 47 sort(re.begin(),re.end()); 48 return re; 49 } 50 };
原文地址:https://www.cnblogs.com/mengqingzhong/p/3130786.html