【发布时间】:2023-03-15 13:02:01
【问题描述】:
#define SIZE 50
typedef struct{
int key;
int value;
}HASH_TABLE;
HASH_TABLE* hashArray[SIZE];
int hashCode(int key) {
return key % SIZE;
}
bool containsDuplicate(int* nums, int numsSize){
int count = 1,i=0;
HASH_TABLE* data = (HASH_TABLE*)malloc(sizeof(HASH_TABLE*));
data->value = count;
for(i=0;i<numsSize;i++)
{
int hashIndex = hashCode(nums[i]);
hashArray[hashIndex]->key = nums[i];
hashArray[hashIndex]->value = data->value;
++hashIndex;
hashIndex %= SIZE;
if(hashArray[hashIndex]->key == nums[i])
{
data->value++;
}
}
if(data->value>0)
return true;
return false;
}
我正在尝试使用 C 中的哈希表算法编写代码以查找重复项。
代码应该以下列方式工作
给定一个整数数组,查找该数组是否包含任何重复项。
如果任何值在数组中至少出现两次,您的函数应该返回 true,如果每个元素都是不同的,它应该返回 false。
示例 1:
输入:[1,2,3,1] 输出:真 示例 2:
输入:[1,2,3,4] 输出:假 示例 3:
输入:[1,1,1,3,3,4,3,2,4,2] 输出:真
请帮我解决我的错误
谢谢
【问题讨论】:
-
malloc(sizeof(HASH_TABLE*))→malloc(sizeof(HASH_TABLE)) -
您为指向某个结构的指针分配了内存,而不是为一个结构分配了内存。
-
很难看出哪个是你的错误,如果你只发布一个sn-p代码(不是一个完整的例子)并且你没有说什么是预期的(并且没有看到)你执行的输出。请编辑您的帖子以说明这两件事并使用最少的代码来显示完整的运行。只是一个 sn-p,您对正在发生的事情的解释(通常是错误的)总是没有用的。谢谢!