| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> AcWing 840. 模拟散列表 -> 正文阅读 |
|
[数据结构与算法]AcWing 840. 模拟散列表 |
题目来源:AcWing 840. 模拟散列表一、题目描述维护一个集合,支持如下几种操作:
输入格式 接下来
N
N
N 行,每行包含一个操作指令,操作指令为 输出格式 每个结果占一行。 数据范围 输入样例:
输出样例:
二、哈希表哈希表的存储结构分为:链地址法、开放寻址法(常用) 1. 拉链法拉链法本质就是邻接表,将重复的元素挂在一条链上。
查询操作:与插入操作类似,如果一个 h a s h hash hash 值对应的槽有多个元素挂在上面,则顺序遍历即可。
运行效果对比:使用该方法耗时 56 m s 56ms 56ms,使用STL库自带的unordered_set容器耗时 186 m s 186ms 186ms。 2. 开放寻址法(常用)开放寻址法只开了一个数组,但是大小一要开到题目的数据范围的 2 2 2~ 3 3 3 倍的质数。例如,如果题目中要输入 1 e 5 1e^5 1e5 个数,那么这个数组的长度至少开到 2 e 5 2e^5 2e5~ 3 e 5 + c 3e^5 + c 3e5+c ,这是一个经验值,这样冲突的概率比较低。该方法常用的原因是,可以使用更少的数组个数。 槽的大小:题目的数据范围的
2
2
2~
3
3
3 倍,同样也是一个质数。
插入操作:
查找操作:
删除操作:类似于冲突处理,找到以后打一个标记。 三、代码1. 链地址法
2. 开放寻址法
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:35:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |