文章目录 哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
哈希表理论基础
讲解链接:代码随想录 (programmercarl.com)
242.有效的字母异位词
题目链接: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. 两个数组的交集
题目链接: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. 快乐数
题目链接: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. 两数之和
题目链接: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 { } ; }
} ;