7-42 整型关键字的散列映射


题目链接这里
题目大意 :就是写一个线性探测的散列

然鹅,我不会写(?)我一共错了两个地方

  1. 有冲突的情况下,就是线性探查然后往后找,但是我之前写的是t++,应该是t = (t+1)%p;...
  2. 在有重复关键字的时候,重复的那个值不应该放到散列表里面...也就是应该线性探查的时候碰到相同的跳出来就可以了...(别忘了散列是干什么的啊喂!查找!

正确代码:

cpp 复制代码
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int main(void)
{
	int n, p;
	scanf("%d%d", &n, &p);
	vector<int> s(p, 0);
    vector<int> flg(p,0);
	for (int i = 0; i < n; i++)
	{
		int a;
		scanf("%d", &a);
		int t = a%p;
		while (flg[t] != 0 && s[t] != a)
			t = (t+1)%p;
		s[t] = a;
        flg[t] = 1;
		printf("%d", t);
		if (i != n - 1)
			printf(" ");
	}
}
相关推荐
爱丽_26 分钟前
ThreadLocal 机制:弱引用 Entry、内存泄漏、线程池复用与线上排查
java·jvm·算法
2301_8154829334 分钟前
C++编译期矩阵运算
开发语言·c++·算法
liulilittle34 分钟前
LINUX RING BUFFER TUN/TAP 1
linux·服务器·网络·c++·信息与通信·通信
☆56639 分钟前
C++中的类型擦除技术
开发语言·c++·算法
m0_5698814744 分钟前
C++与自动驾驶系统
开发语言·c++·算法
2401_833197731 小时前
C++代码切片分析
开发语言·c++·算法
月落归舟1 小时前
每日算法题 14---14.环形链表
数据结构·算法·链表
m0_621438521 小时前
实时音频处理C++实现
开发语言·c++·算法
weixin_421922691 小时前
模板代码性能测试
开发语言·c++·算法
Liu628881 小时前
C++中的模板方法模式
开发语言·c++·算法