(1) 拉链法

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];h[k] = idx ++ ;
}// 在哈希表中查询某个数是否存在
bool find(int x)
{int k = (x % N + N) % N;for (int i = h[k]; i != -1; i = ne[i])if (e[i] == x)return true;return false;
}

(2) 开放寻址法

int h[N];// 如果x在哈希表中,返回x的下标;如果x不在哈希表中,返回x应该插入的位置
int find(int x)
{int t = (x % N + N) % N;while (h[t] != null && h[t] != x){t ++ ;if (t == N) t = 0;}return t;
}

模板题

模拟散列表

题目描述:

维护一个集合,支持如下几种操作:

“I x”,插入一个数x;
“Q x”,询问数x是否在集合中出现过;
现在要进行N次操作,对于每个询问操作输出对应的结果。

输入格式

第一行包含整数N,表示操作数量。

接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。

输出格式

对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Yes”,否则输出“No”。

每个结果占一行。

数据范围

1≤N≤105
−109≤x≤109

输入样例:

5
I 1
I 2
I 3
Q 2
Q 5

输出样例:

Yes
No

C++代码如下:

#include <iostream>
using namespace std;
const int mod = 100003,maxn = 200005;
int h[maxn];
int find(int x){int t = (x % mod + mod) % mod;while(h[t] && h[t] != x)   t++;return t;}
int main(){int n,x;cin>>n;char op;while(n--){cin>>op>>x;if(op == 'I')   h[find(x)] = x;else    cout<<(h[find(x)] == x ? "Yes" : "No")<<endl;}return 0;
}

~~一般哈希(数据结构)(附模板题AcWing 840 模拟散列表)相关推荐

  1. ~~队列(数据结构)(附模板题 AcWing 829. 模拟队列)

    1. 普通队列: // hh 表示队头,tt表示队尾 int q[N], hh = 0, tt = -1;// 向队尾插入一个数 q[ ++ tt] = x;// 从队头弹出一个数 hh ++ ;// ...

  2. AcWing 840. 模拟散列表(散列hash)

    题目连接 https://www.acwing.com/problem/content/description/842/ 思路 使用开放寻址法,思路大概是这样我们讲要查询的数模上一个大于n的质数,然后 ...

  3. ~~字符串哈希(数据结构)(附模板题AcWing 841 字符串哈希)

    核心思想: 将字符串看成P进制数,P的经验值是131或13331,取这两个值的冲突概率低. 小技巧: 取模的数用2^64,这样直接用unsigned long long存储,溢出的结果就是取模的结果. ...

  4. ~~堆(数据结构)(附模板题 AcWing 838. 堆排序)

    模板 // h[N]存储堆中的值, h[1]是堆顶,x的左儿子是2x, 右儿子是2x + 1 // ph[k]存储第k个插入的点在堆中的位置 // hp[k]存储堆中下标是k的点是第几个插入的 int ...

  5. ~~朴素dijkstra算法 (搜索与图论)(附模板题AcWing 849. Dijkstra求最短路 I)

    模板 时间复杂是 O(n2+m), n表示点数,m 表示边数 int g[N][N]; // 存储每条边 int dist[N]; // 存储1号点到每个点的最短距离 bool st[N]; // 存 ...

  6. 哈希表(模拟散列表 字符串哈希)

    目录 一.哈希表的概念 二.模拟散列表 题目 代码实现 ①拉链法 ②开放寻址法 三.字符串哈希 题目 思路 注意点 代码实现 一.哈希表的概念 哈希表(又称为散列表),将一个比较大的值域映射到一个小的 ...

  7. 匈牙利算法——最大匹配问题详解(附模板题)

    基本概念转自  https://blog.csdn.net/dengheCSDN/article/details/77619308 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名. ...

  8. 二维前缀和(附模板题)

    模板 S[i, j] = 第i行j列格子左上部分所有元素的和 以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为: S[x2, y2] - S[x1 - 1, y2] - S[x2, ...

  9. ~~二维差分(附模板题)

    模板 给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c: S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, ...

最新文章

  1. 着眼未来!2019未来杯高校AI挑战赛圆满落幕
  2. Hadoop家族学习路线图--转载
  3. Halcon - 测量 - 轮廓到线的距离
  4. textmetric结构
  5. 思科路由器全局、接口、协议调试(下)
  6. 一个IT人的非典型职场十年 (5)
  7. Android软键盘弹出时,覆盖布局,不是把布局顶上去的解决方法
  8. 【LeetCode笔记】剑指 Offer 59 - II. 队列的最大值(Java、辅助队列)
  9. 利用SNMP4J实现 Snmp Trap 完整例子
  10. android 3.0 m3u8,在Android中播放m3u8视频
  11. 插入排序算法--Java实现
  12. Uber和Lyft推个人验证PIN码功能降接送混乱
  13. 华为交换机查看当前配置
  14. c# chart 各个属性_C#之Chart控件系列教程
  15. linux wine 原理,wine的工作原理与自动运行PE程序
  16. VMVare 安装centos系统时,界面显示不全
  17. Android Studio的安装 环境搭建
  18. asp毕业设计——基于asp+access的档案管理系统设计与实现(毕业论文+程序源码)——档案管理系统
  19. 错误 You've successfully authenticated, but Gitee.com does not provide she access.
  20. 关于this引用逸出的理解

热门文章

  1. 多线程,异步委托,同步委托几种方式的区别
  2. TrustedInstaller.exe in Windows Vista consumes 100% CPU
  3. python 学习DAY12
  4. python学习--面向过程程序设计实例
  5. hadoop错误:Does not contain a valid host:port authority
  6. 2017/08/03 工作日志
  7. jq 中each的用法 (share)
  8. 城市管网 GIS 数据表的存储
  9. 《深入学习 Golang》并发编程
  10. 大厂十年IT老兵血泪教训,IT人到底要如何选择合适的报表工具?