leetcode 1 two numbers hashmap

Mainly hashmap. There are side insertion edge look, improve efficiency and reduce space complexity.

Before been used map, and found that there hashmap, more efficient.

Note the name space 

using namespace __gnu_cxx;

The problem is that hash_map not currently included in the C ++ Standard Template Library, problems may occur when cross-platform use,

 

But almost every version of STL provides corresponding implementation.

Header file <hash_map>

In addition there are several ways when map data is inserted. I used make_pair

 

Common

  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;
    };
};

 

Guess you like

Origin www.cnblogs.com/lqerio/p/11706340.html