哈希表(处理冲突的两种方式)
哈希表处理冲突的方式主要有两种一种是拉链法,另一种是开放寻址法
拉链法即开多个链表当发生冲突时把元素插入链表中
#include <iostream> #include <cstring> using namespace std; const int N =1e5+3; int h[N],e[N],ne[N],idx,n; 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; } int main() { cin>>n; memset(h, -1 ,sizeof h); while(n--) { int x; string op; cin>>op>>x; if(op == "I") insert(x); else { if(find(x)) puts("Yes"); else puts("No"); } } return 0; }
开放寻址法
#include"bits/stdc++.h"
using namespace std;
const int N=200003,null=0x3f3f3f3f;
int h[N];
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;
}
int main()
{
memset(h, 0x3f, sizeof h);
int n;
cin>>n;
while(n--)
{
string ch;int x;
cin>>ch>>x;
if(ch=="I") h[find(x)]=x;
else
{
if(h[find(x)]==null) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署