查询数字是否出现_Hash
/**
算法名称: hash应用
详 情 : 旺仔 2020.04.04
算法思想:map类
**/
#include <iostream>
using namespace std;
const int maxn = 100010;
//是否出现
bool hashTable1[maxn] = {false};
//统计个数
int hashTable2[maxn] = {0};
int main()
{
int n;
cin >> n;
for(int i = 0 ; i < n ; i ++){
int temp;
cin>>temp;
hashTable1[temp] = true;
hashTable2[temp] ++;
}
int m;
cin>>m;
for(int i = 0 ; i < m ; i ++){
int temp;
cin>>temp;
if(hashTable1[temp])
cout<<"YES"<<" 个数是:";
cout<<hashTable2[temp];
}
return 0;
}
hash的使用
1.使用除留余数法+线性探查
/**
算法名称: hash应用
详 情 : 旺仔 2020.04.04
算法思想:使用除留余数法+线性探查
**/
#include <iostream>
using namespace std;
const int maxn = 100010;
int main()
{
int len, num[maxn],Hash[maxn];
bool Flag[maxn] = {false};
cin >> len;
for(int i = 0 ; i < len ; i ++)
cin>>num[i];
for(int i = 0 ; i < len ; i ++){
int h = num[i]% len;
while( Flag[h] != false){
h = h + 1;
}
Flag[h] = true;
Hash[h] = num[i];
}
for(int i = 0 ; i < len; i ++){
cout<<Hash[i]<<" ";
}
return 0;
}
2. 使用直接定址法+链地址
但是由于链表好久没有用过了,参考
3 字符串hash先学习初步 参考