gpt4 book ai didi

c - 我在 Leetcode No 1(Two Sum) 上遇到运行时错误

转载 作者:行者123 更新时间:2023-11-30 16:21:16 25 4
gpt4 key购买 nike

我使用哈希表和线性探测来解决这个问题。我在 Visual Studio 上测试了我的代码并得到了正确的解决方案。这是代码:

#define HTCAPACITY 50000

int hash(int key) {
return key % HTCAPACITY;
}

void htInsert(int *keys, int *values, int key, int value) {
int index = hash(key);

while(values[index] >= 0)
index = (index + 1) % HTCAPACITY;
keys[index] = key;
values[index] = value;
}

int htSearch(int *keys, int *values, int key) {
int index = hash(key);

while(values[index] >= 0) {
if(keys[index] == key)
return values[index];
index = (index + 1) % HTCAPACITY;
}
return -1;
}


int* twoSum(int* nums, int numsSize, int target) {
int keys[HTCAPACITY] = {0};
int values[HTCAPACITY];
memset(values, -1, sizeof(int)*HTCAPACITY);
int i;
int value = -1;
int *indices = (int *)malloc(sizeof(int)*2);
int complement;

for(i=0; i<numsSize; i++) {
complement = target - nums[i];
if((value = htSearch(keys, values, complement)) != -1) {
indices[0] = value;
indices[1] = i;
return indices;
} else {
htInsert(keys, values, nums[i], i);
}
}
return NULL;
}

这里是错误描述:(抱歉我无法直接复制消息) error description

leetcode 告诉我们最后执行的输入是 [0, 4, 3, 0] 和 0

最佳答案

您尚未包含测试程序或函数的确切输入。然而,我大胆猜测补体结果为负。

您的错误可能是您的哈希函数。您使用 %(取余运算符)作为哈希值。 % 对于负数返回负数。请参阅Modulo operation with negative numbers

我怀疑您得到了一个负键值,这会导致值和键在分配之前引用内存。

关于c - 我在 Leetcode No 1(Two Sum) 上遇到运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54957447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com