1. 基本概念
1. 哈希表
我们先来看一下什么是哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。
2. 通过图解来了解哈希表
hash函数算法, 就是根据每个key的值, 进行hash函数的计算, 然后映射到我们数据结构中, 我们访问的时候, 时间复杂度就是O(1)的。
如果有多个key的值, 经过hash函数的算法, 得到的value值是一样的, 那我们就通过链表的形式, 把所有的value值进行链接一下。
3. 集合
集合最重要的一个特征, 就是其内部元素是不能重复的。
2. Map和Set的一些实现方式
map的实现方式有:
HashMap: 通过key, value的映射关系实现, 根据key获取元素, 时间复杂度为O(1)
TreeMap: 内部是通过二叉树实现的Map, 查询元素的时间复杂度为(logn), 但是TreeMap里面的元素是排序的。
Set的实现方式有:
HashSet: 查询元素的时间复杂度也是O(1)
TreeSet: 时间复杂度为O(logn), 但是内部的元素是排序好的。
如果我们讲究效率, 就用HashMap或者HashSet就可以, 查询快,
如果我们需要排序, 使用TreeMap和TreeSet.
3. leetcode常用习题分析
1. leetcode242(有效字母异味词)
//给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
//
// 示例 1:
//
// 输入: s = "anagram