用与快速确认一个元素是不是在该数据结构中
通过Hash function 建立映射,快速查找,查找的时间复杂度为O(1)
Python中有set集合,dict字典,等
哈希冲突的解决方案:1.拉链法,如果通过hash function计算后得到的index同为一个值,那么在数据量比较小的时候采用拉链法,即在该索引后面建立一个链表。2.线性探测法,将哈希表的大小设置成大于数据量,遇到哈希冲突后就将该数据放在第一个空位。
底层实现:红黑树,红黑树是一种平衡二叉搜索树
题目:
242.有效的字母异位词
思路:1.可以通过建立字典,然后比较两个字典是否相等完成此题
2.可以通过建立一个长度为26的数组,通过ord()-ord(‘a’)将字母映射到数组的某个位置,然后遍历该字符串记录每个字母出现的次数。然后再遍历另一个字符串,碰到一个字母便在数组中执行--操作,最后判断该数组中是否为全0,是的话就返回True,否则返回False
349. 两个数组的交集
思路:1:直接讲两个数组转化成集合然后求交集,最后在转换成list
2:将数组1和2分别转化成集合,然后申请一个数组,判断集合中的元素是否即存在数组1和2中,是的话就放进该数组。
1. 两数之和 :
思路:
建立一个字典,数组的索引为value,数组的值为key。
遍历该数组,如果target - nums[index]不在字典中,保存当前遍历的元素的索引和值,如果在字典中,直接返回[cache[target - nums[index]], index]