您的位置:首页 > 其它

1_Two Sum --LeetCode

2018-01-23 11:34 411 查看
原题如下:



思路:将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 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: