拉链法

#include<cstring>
#include<iostream>
using namespace std ;
const int N=;
int h[N],e[N],ne[N],idx;
void insert(int x) {
int k=(x%N+N)%N;//哈希函数
//模拟单链表
e[idx]=x;//先存下来
ne[idx]=h[k];//指向负1
h[k]=idx++;//原来的数字指向idx
}
bool find(int x) {
int k=(x%N+N)%N;
for(int i=h[k]; i!=-; i=ne[i]) {
if(e[i]==x) return true;
}
return false;
}
int main() {
int n;
cin>>n;
memset(h,-,sizeof h);
while(n--) {
char op[];
int x;
cin>>op>>x;
if(*op=='I') insert(x);
else {
if(find(x)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
return ;
}

开放寻址法

#include <cstring>
#include <iostream>
using namespace std;
const int N = , null = 0x3f3f3f3f;
int h[N];
int find(int x) {
int t = (x % N + N) % N;//哈希函数
while (h[t] != null && h[t] != x) { //如果被插入过且不为x
t ++ ;//往下接着找
if (t == N) t = ;//找到头了,从头开始
}
return t;//直到找到为止
}
int main() {
memset(h, 0x3f, sizeof h);
int n;
scanf("%d", &n);
while (n -- ) {
char op[];
int x;
scanf("%s%d", op, &x);
if (*op == 'I') h[find(x)] = x;
else {
if (h[find(x)] == null) puts("No");//如果没有插入过
else puts("Yes");
}
}
return ;
}

AcWing 840. 模拟散列表的更多相关文章

  1. [转载] 散列表(Hash Table)从理论到实用(上)

    转载自:白话算法(6) 散列表(Hash Table)从理论到实用(上) 处理实际问题的一般数学方法是,首先提炼出问题的本质元素,然后把它看作一个比现实无限宽广的可能性系统,这个系统中的实质关系可以通 ...

  2. 白话算法(6) 散列表(Hash Table)从理论到实用(上)

    处理实际问题的一般数学方法是,首先提炼出问题的本质元素,然后把它看作一个比现实无限宽广的可能性系统,这个系统中的实质关系可以通过一般化的推理来论证理解,并可归纳成一般公式,而这个一般公式适用于任何特殊 ...

  3. 【algo&ds】【吐血整理】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、B树、字典树、红黑树、跳表、散列表

    本博客内容耗时4天整理,如果需要转载,请注明出处,谢谢. 1.树 1.1树的定义 在计算机科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结 ...

  4. 【PHP数据结构】散列表查找

    上篇文章的查找是不是有意犹未尽的感觉呢?因为我们是真真正正地接触到了时间复杂度的优化.从线性查找的 O(n) 直接优化到了折半查找的 O(logN) ,绝对是一个质的飞跃.但是,我们的折半查找最核心的 ...

  5. pta L2-002 链表去重 +散列表知识小普及+二进制取反补码运算

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805072641245184: 废话:今天忙着学习新知识了,没怎 ...

  6. 散列表(hash table)——算法导论(13)

    1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...

  7. HashTable(散列表)

    最近都在研究数据结构,关于hashtable,或者叫做散列表,过去一直不了解是什么东西,现在终于明白了. 所谓hashtable,就是某组key,通过某个关系(函数),得到一个与之对应的映射值(在计算 ...

  8. &11,散列表

    #1,是什么? 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个 ...

  9. [转载] 散列表(Hash Table)从理论到实用(中)

    转载自:白话算法(6) 散列表(Hash Table)从理论到实用(中) 不用链接法,还有别的方法能处理碰撞吗?扪心自问,我不敢问这个问题.链接法如此的自然.直接,以至于我不敢相信还有别的(甚至是更好 ...

随机推荐

  1. day03_2spring3

    SSH整合(续) 一.spring整合hibernate:有hibernate.cfg.xml 前提:导入jar包,在前面已经介绍了jar包的整合,我们只需要将整合的所有jar包导进去即可. 1.创建 ...

  2. MySQL的修改和删除数据表字段

    MySQL的修改和删除数据表字段 写在前面: 数据库存在的意义:数据存储和数据管理. 数据库:行(数据),列(字段) 注意:本页是解决了列的字段问题.下一页是解决行的数据问题. 注意,所有的字段名,最 ...

  3. Codeforces 764C Timofey and a tree

    Each New Year Timofey and his friends cut down a tree of n vertices and bring it home. After that th ...

  4. 展开折叠效果 height未知 transition无效

    展开折叠效果,没有设置height时 transition 不起作用 可以设置max-height .default { max-height: 500px; transition: all 1000 ...

  5. cursor 把鼠标指针的形状弄成一只伸出食指的手

    <span style="cursor:auto">auto</span><br> <span style="cursor:cr ...

  6. 为mongoDB加用户权限管理

    MongoDB常用命令 > show dbs                  #显示数据库列表 > show collections        #显示当前数据库中的集合(类似关系数据 ...

  7. IIS支持json、geojson文件

    最近在搞asp.net + openlayers. 其中openlayer有个数据源支持 .geojson 数据,但是怎么测试都不能成功.同样的数据拿到php下就能成功显示. 搓. 在网上漫无目的的搜 ...

  8. tp5 使用phpword 替换word模板并利用com组件转换pdf

    tp5   使用phpword 替换word模板并利用com组件转换pdf 一.首先composer安装PHPword,就不多说了 二.然后是把模板中要替换的部分用变量代替 三.把原始的模板文件放入项 ...

  9. java基础之 变量

    变量是一个内存位置的名称. 1.成员变量(实例变量,属性) 成员变量就是类中的属性,当创建对象的时候,每个对象都有一份属性.一个对象中的属性就是成员变量. 2.本地变量(局部变量) 在方法内声明的变量 ...

  10. selenium grid的使用

    Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员经常要测试多浏览器的兼容性,那就可以用到grid了. selenium grid的hub相当于一个接收脚本并分发脚本的角色,n ...