算法--哈希表
哈希表利用空间换时间
当我们要快速判断一个元素是否出现在集合里的时候,就需要考虑哈希表。
哈希表一般会选择三种数据结构,分别是:数组、set(集合)、map(映射)。
数组就是简单的哈希表,但是其大小不能无限开辟
优先使用unordered_set(因为其查找和增删效率最优);若需要集合有序,则用set;若不仅要有序还可以重复,则用multiset。
map是key value的数据结构,它对key有限制,对value没有限制。
有效的字母异位词
利用最简单的哈希表--数组进行对个数进行统计,所以要创建一个新数组,数组的下标值就是对应的ASCII码相对值
最后统计新数组中的值判断t是否是s的字母异位词。
补充java语法
因为是在堆中,所以new的时候jvm会自动给数组赋值。
1、int类型定义的数组,初始化默认是0
2、String类型定义的数组,默认值是null
3、char类型定义的数组,默认值是0对应的字符
4、double类型定义的数组,默认值是0.0
5、float类型定义的数组,默认值是0.0
6、boolean类型定义的数组,默认值是false
两个数组的交集(若哈希值比较少且特别分散、跨度非常大,则不能使用数组,否则会浪费较大的空间)----若题目表明不需要对数据进行排序,且数据不能重复,则用unordered_set

浙公网安备 33010602011771号