1_Two Sum --LeetCode

原题如下:

思路:将nums放到一个map<int,int>中,其中,键是nums中元素,值对应其下标。然后遍历nums,取nums中一个值nums[i],接着用target减去它,最后再map中找差值map[num[i]]。如果发现差值,则返回i,map[num[i]]。

代码如下:

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         vector<int> vec;
 5         map<int,int> im;
 6         //将nums装进map容器中,键为vector元素,值为数组下标
 7         for(int i = 0;i<nums.size();i++)
 8         {
 9             im[nums[i]]=i;
10         }
11         
12         map<int,int>::iterator it;
13         //遍历vector作差,然后再map中寻找差值,如果命中,则记录下标
14         for(int i = 0;i<nums.size();i++)
15         {
16             int sub = target - nums[i];
17             it = im.find(sub);
18             if(it != im.end() && it->second != i)
19             {
20                 vec.push_back(i);
21                 vec.push_back(it->second);
22                 break;
23             }
24         }
25         return vec;
26 }

 

posted @ 2018-01-23 11:34  HOU_JUN  阅读(182)  评论(0编辑  收藏  举报