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

leetcode 1 两数之和 hashmap

时间:2019-10-20 01:14:42      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:code   没有   高效   break   pst   数据   div   stl   注意   

主要是hashmap。还有边插入边查找,提高效率和降低空间复杂度。

之前一直用map,结果发现还有hashmap,效率更高。

注意名称空间为 

using namespace __gnu_cxx;

问题在于hash_map目前并没有纳入C++ 标准模板库中,在跨平台使用时就可能会出现问题,

 

但几乎每个版本的STL都提供了相应的实现。

头文件<hash_map>

另外map插入数据时有几种方法。我习惯用make_pair

 

常用

  1.    map<int, string> mapStudent;  
  2.   
  3.     mapStudent.insert(pair<int, string>(1, "student_one"));  
  1.  map<int, string> mapStudent;  
  2.   
  3.     mapStudent.insert(map<int, string>::value_type (1, "student_one"));  
  1.  map<int, string> mapStudent;  
  2.   
  3.     mapStudent.insert(make_pair(1, "student_one"));  
  4.   
  5.     mapStudent.insert(make_pair(2, "student_two"));  

 

#include<hash_map>
#include<vector>

using namespace __gnu_cxx;

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        /*
       
        vector<int> b;
        for(int i=0;i<nums.size();i++)
            mmap.insert(make_pair(nums[i],i));
        for(int i=0;i<nums.size();i++)
        {
            if((mmap.count(target-nums[i]))&&(mmap[target-nums[i]]!=i))
            {
                b.push_back(mmap[target-nums[i]]);
                b.push_back(i);
                break;
            }
        }*/
        vector<int> b;
          hash_map<int,int> mmap;
        for(int i=0;i<nums.size();i++)
        {
             mmap.insert(make_pair(nums[i],i));
            if((mmap.count(target-nums[i]))&&(mmap[target-nums[i]]!=i))
            {
                b.push_back(mmap[target-nums[i]]);
                b.push_back(i);
                break;
            }
        }
        
        return b;
    };
};

 

leetcode 1 两数之和 hashmap

标签:code   没有   高效   break   pst   数据   div   stl   注意   

原文地址:https://www.cnblogs.com/lqerio/p/11706340.html

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