算法--哈希表
哈希表利用空间换时间
当我们要快速判断一个元素是否出现在集合里的时候,就需要考虑哈希表。
哈希表一般会选择三种数据结构,分别是:数组、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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南