[LeetCode]Two Sum
题意:给一个整数的数组和目标值,找出这个数组中的两个元素的和为该目标值的元素的下标。
本题来源:https://leetcode.com/problems/two-sum/
1 struct Node 2 { 3 int val; 4 int index; 5 Node(){} 6 Node(int v, int idx):val(v), index(idx){} 7 }; 8 9 bool compare(const Node &l, const Node &r) 10 { 11 return l.val < r.val; 12 } 13 14 class Solution { 15 public: 16 vector<int> twoSum(vector<int> &numbers, int target) { 17 // 把下标和值保存到Node中,然后在Node进行值的排序 18 vector<Node> t; 19 for(int i = 0; i < numbers.size(); i++) 20 t.push_back(Node(numbers[i], i + 1)); 21 sort(t.begin(), t.end(), compare); 22 23 int i = 0; 24 int j = numbers.size() - 1; 25 while(i < j) 26 { 27 int sum = t[i].val + t[j].val; 28 if (sum == target) 29 { 30 vector<int> ret; 31 int minIndex = min(t[i].index, t[j].index); 32 int maxIndex = max(t[i].index, t[j].index); 33 ret.push_back(minIndex); 34 ret.push_back(maxIndex); 35 return ret; 36 } 37 else if (sum < target) 38 i++; 39 else 40 j--; 41 } 42 } 43 };
以上代码,我不晓得还有更好的方法没,求大神指导、调教···