仅为个人记录复盘学习历程,解题思路来自代码随想录
代码随想录刷题笔记总结网址:
代码随想录
哈希基础知识的学习摘要:
哈希表(散列表):通过索引实现对数据的快速访问
哈希函数作用:通过内容获取索引
哈希碰撞:不同数据匹配到了相同索引
哈希碰撞的解决:
拉链法:使用链表来存储数据,当发生哈希碰撞的时候在链表内进行查找
线性探测法:tableSize大于dataSize,依靠哈希表中的空位来解决碰撞问题
哈希表常用的三种数据结构:
数组,集合,
映射当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法
242.有效的字母异位词
字母异位词:给定字符串中所拥有字母字母都相同,但字母排序不同的字符串。
提供参数:string s,string t
主要操作:
创建一个容量为26的数组(题目假设全为小写字母,小写的26个字母asii码为连续值)
遍历第一个字符串s,出现字母的对应数组位置+1(a:0,z:25)
遍历第二个字符串t,出现字母的对应数组位置-1
遍历数组,若全为0则返回true,否则返回false
数组是一个简单的哈希表,这里使用数组,小写字母为key(通过映射转化为0-25),字幕出现次数为value
哈希表的关键在于通过索引快速访问指向的数据,这道题就是使用哈希表实现对数据的快速访问
349. 两个数组的交集
提供参数:数组nums1,数组nums2
主要操作:
创建一个用于给结果去重的集合result_set
创建一个集合set1用来存储nums1并去重
遍历nums2中的每个元素看是否存在于set1中,如果存在,加入result_set
解法上与242.有效的字母异位词中相似,只是本题中数组数据范围不限,使用数组容易造成数组空间的浪费,使用集合而不是数组的数据结构