数据结构与算法题目集7-42——整型关键字的散列映射

我的数据结构与算法题目集代码仓:https://github.com/617076674/Data-structure-and-algorithm-topic-set

原题链接:https://pintia.cn/problem-sets/15/problems/889

题目描述:

数据结构与算法题目集7-42——整型关键字的散列映射

知识点:哈希表

思路:用一个bool类型的数组filled标记某个位置是否有值,用一个int型数组nums标记存储数字

注意:输入的数字可能已经在哈希表中,这时候我们只需输出其在哈希表中的位置即可,不必插入

C++代码:

#include<iostream>

using namespace std;

int main(){
	int N, P;
	scanf("%d %d", &N, &P);
	bool filled[P];
	fill(filled, filled + P, false);
	int nums[P];
	for(int i = 0; i < N; i++){
		int num;
		scanf("%d", &num);
		for(int j = 0; j < P; j++){
			if(!filled[(num + j) % P] || nums[(num + j) % P] == num){
				filled[(num + j) % P] = true;
				nums[(num + j) % P] = num
				printf("%d", (num + j) % P);
				break;
			}
		}
		if(i == N - 1){
			printf("\n"); 
		}else{
			printf(" ");
		}
	}
	return 0;
}

C++解题报告:

数据结构与算法题目集7-42——整型关键字的散列映射