文章目录  哈希表理论基础 242.有效的字母异位词   349. 两个数组的交集   202. 快乐数   1. 两数之和     
 
讲解链接:代码随想录 (programmercarl.com) 题目链接:242. 有效的字母异位词 - 力扣(LeetCode) 讲解链接:代码随想录 (programmercarl.com) 状态:一遍AC。 定义一个数组叫做record用来上记录字符串s里字符出现的次数 。 class  Solution  { 
public : bool  isAnagram ( string s,  string t)  { int  record[ 26 ]  =  { 0 } ; for  ( int  i =  0 ;  i <  s. size ( ) ;  i++ )  { record[ s[ i]  -  'a' ] ++ ; } for  ( int  i =  0 ;  i <  t. size ( ) ;  i++ )  { record[ t[ i]  -  'a' ] -- ; } for  ( int  i =  0 ;  i <  26 ;  i++ )  { if  ( record[ i]  !=  0 )  { return  false ; } } return  true ; } 
} ; 
题目链接:349. 两个数组的交集 - 力扣(LeetCode) 讲解链接:代码随想录 (programmercarl.com) 状态:一遍AC。 class  Solution  { 
public : vector< int >  intersection ( vector< int > &  nums1,  vector< int > &  nums2)  { unordered_set< int >  result_set;  unordered_set< int >  nums_set ( nums1. begin ( ) ,  nums1. end ( ) ) ; for  ( int  num :  nums2)  { if  ( nums_set. find ( num)  !=  nums_set. end ( ) )  { result_set. insert ( num) ; } } return  vector < int > ( result_set. begin ( ) ,  result_set. end ( ) ) ; } 
} ; 
题目链接:202. 快乐数 - 力扣(LeetCode) 讲解链接:代码随想录 (programmercarl.com) 状态:直接看题解了。 这道题目使用哈希法 ,来判断这个sum是否重复出现 ,如果重复了就是return false, 否则一直找到sum为1为止。 class  Solution  { 
public : int  getSum ( int  n)  { int  sum =  0 ; while  ( n)  { sum +=  ( n %  10 )  *  ( n %  10 ) ; n /=  10 ; } return  sum; } bool  isHappy ( int  n)  { unordered_set< int >  set; while ( 1 )  { int  sum =  getSum ( n) ; if  ( sum ==  1 )  { return  true ; } if  ( set. find ( sum)  !=  set. end ( ) )  { return  false ; }  else  { set. insert ( sum) ; } n =  sum; } } 
} ; 
题目链接:1. 两数之和 - 力扣(LeetCode) 讲解链接:代码随想录 (programmercarl.com) 状态:直接看题解了。 本题其实有四个重点: 为什么会想到用哈希表 哈希表为什么用map 本题map是用来存什么的 map中的key和value用来存什么的  class  Solution  { 
public : vector< int >  twoSum ( vector< int > &  nums,  int  target)  { std:: unordered_map < int , int >  map; for ( int  i =  0 ;  i <  nums. size ( ) ;  i++ )  { auto  iter =  map. find ( target -  nums[ i] ) ;  if ( iter !=  map. end ( ) )  { return  { iter-> second,  i} ; } map. insert ( pair < int ,  int > ( nums[ i] ,  i) ) ;  } return  { } ; } 
} ;