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

以上代码,我不晓得还有更好的方法没,求大神指导、调教···

posted @ 2015-03-30 10:41  橙&子  阅读(186)  评论(0编辑  收藏  举报