码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Two Sum

时间:2015-03-30 12:37:42      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

题意:给一个整数的数组和目标值,找出这个数组中的两个元素的和为该目标值的元素的下标。

本题来源: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 };

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

[LeetCode]Two Sum

标签:

原文地址:http://www.cnblogs.com/orange1438/p/4377371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!