哈希表(处理冲突的两种方式)
哈希表处理冲突的方式主要有两种一种是拉链法,另一种是开放寻址法
拉链法即开多个链表当发生冲突时把元素插入链表中
#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
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 工良出品 | 长文讲解 MCP 和案例实战
· 多年后再做Web开发,AI帮大忙
· centos停服,迁移centos7.3系统到新搭建的openEuler
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 上周热点回顾(4.14-4.20)