주로 해시 맵. 측면 삽입 가장자리 모양이 있습니다, 효율성을 개선하고 공간의 복잡성을 줄일 수 있습니다.
전에지도를 사용하고, 더 효율적이 해시 맵 것으로 나타났습니다.
이름 공간을 참고
네임 스페이스 사용 __gnu_cxx을;
문제는 현재 C ++ 표준 템플릿 라이브러리에 포함되지 hash_map이 문제가 될 때 크로스 플랫폼 사용을 발생할 수 있다는 것입니다
그러나 STL의 거의 모든 버전은 해당 구현을 제공합니다.
헤더 파일 <hash_map>
또한지도 데이터를 삽입하는 방법은 여러 가지가 있습니다. 나는 make_pair 사용
공통의
- 지도 < INT, 문자열> mapStudent;
- mapStudent.insert (쌍 < INT 문자열> (1 "student_one"));
- 지도 < INT, 문자열> mapStudent;
- mapStudent.insert (지도 < INT, 문자열> :: VALUE_TYPE (1, "student_one"));
- 지도 < INT, 문자열> mapStudent;
- mapStudent.insert (make_pair (1 "student_one"));
- 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 단계; }; };