leetcode 1 개 두 숫자의 해시 맵

주로 해시 맵. 측면 삽입 가장자리 모양이 있습니다, 효율성을 개선하고 공간의 복잡성을 줄일 수 있습니다.

전에지도를 사용하고, 더 효율적이 해시 맵 것으로 나타났습니다.

이름 공간을 참고 

네임 스페이스 사용 __gnu_cxx을;

문제는 현재 C ++ 표준 템플릿 라이브러리에 포함되지 hash_map이 문제가 될 때 크로스 플랫폼 사용을 발생할 수 있다는 것입니다

 

그러나 STL의 거의 모든 버전은 해당 구현을 제공합니다.

헤더 파일 <hash_map>

또한지도 데이터를 삽입하는 방법은 여러 가지가 있습니다. 나는 make_pair 사용

 

공통의

  1.    지도 < INT, 문자열> mapStudent;  
  2.   
  3.     mapStudent.insert (쌍 < INT 문자열> (1  "student_one"));  
  1.  지도 < INT, 문자열> mapStudent;  
  2.   
  3.     mapStudent.insert (지도 < INT, 문자열> :: VALUE_TYPE (1,  "student_one"));  
  1.  지도 < INT, 문자열> mapStudent;  
  2.   
  3.     mapStudent.insert (make_pair (1  "student_one"));  
  4.   
  5.     mapStudent.insert (make_pair (2  "student_two"));  

 

#INCLUDE <hash_map> 
#INCLUDE <벡터> 사용 스페이스 __gnu_cxx 단계; 클래스 해결 {
 공개 : 
    벡터 < INT > twoSum (벡터 < INT > & nums, INT의 타겟) {
         / * 
        벡터 <INT> B; 
        대해 INT (I = 0; I)이 (nums.size를 <; 내가 ++) 
            mmap.insert (make_pair (nums [I]을, 나)); 
        대해 INT (I = 0; I)는 (nums.size를 <; 내가 ++) 
        { 
            경우 ((mmap.count (타겟 nums [I])) && (mmap에 [목표 nums [I]] = 1)!) 
            { 
                b.push_back (mmap에 [목표 nums [I]); 

 


       
                b.push_back (I);
                단절; 
        } * / 
        벡터 < INT > B; 
          hash_map < INT , INT > 의 mmap;
        위한 ( int로 I = 0 ; I)이 (nums.size를 <; 내가 ++ ) 
        { 
             mmap.insert (make_pair (nums [I], I)); 
            경우 ((mmap.count (타겟 nums [I])) && = (mmap에 [I] 타깃 nums]! I)) 
            { 
                b.push_back (mmap에 [목표 - nums [I]); 
                b.push_back (I); 
                휴식 ; 
            } 
        }
        
         리턴 B 단계;
    }; 
};

 

추천

출처www.cnblogs.com/lqerio/p/11706340.html