主要是hashmap。还有边插入边查找,提高效率和降低空间复杂度。
之前一直用map,结果发现还有hashmap,效率更高。
注意名称空间为
using namespace __gnu_cxx;
问题在于hash_map目前并没有纳入C++ 标准模板库中,在跨平台使用时就可能会出现问题,
但几乎每个版本的STL都提供了相应的实现。
头文件<hash_map>
另外map插入数据时有几种方法。我习惯用make_pair
常用
- map<int, string> mapStudent;
- mapStudent.insert(pair<int, string>(1, "student_one"));
- map<int, string> mapStudent;
- mapStudent.insert(map<int, string>::value_type (1, "student_one"));
- map<int, string> mapStudent;
- mapStudent.insert(make_pair(1, "student_one"));
- 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; }; };