gpt4 book ai didi

c - leetcode 560. 子数组和等于 K

转载 作者:行者123 更新时间:2023-11-30 19:52:27 31 4
gpt4 key购买 nike

我在Leetcode 560上发现了一个奇怪的事情。Subarray Sum Equals K

这是我的代码,由 gcc 编译

#define HASH_LEN 10000

int hashTable[HASH_LEN][2] = {0};

inline int hash_push(int value)
{
int hashIdx, tempHashIdx;

tempHashIdx = hashIdx = (value > 0) ? (value%HASH_LEN) : ((-1*value)%HASH_LEN);
while( hashTable[hashIdx][1] > 0 )
{
if( hashTable[hashIdx][0] == value )
{
hashTable[hashIdx][1]++;
return 1;
}

hashIdx = (hashIdx+1)%HASH_LEN;
if(tempHashIdx == hashIdx) return -1;
}
hashTable[hashIdx][0] = value;
hashTable[hashIdx][1] = 1;

return 0;
}

inline int hash_find(int value)
{
int hashIdx, tempHashIdx;

tempHashIdx = hashIdx = (value > 0) ? (value%HASH_LEN) : ((-1*value)%HASH_LEN);

while( hashTable[hashIdx][1] > 0 )
{
if( hashTable[hashIdx][0] == value ) return hashTable[hashIdx][1];

hashIdx = (hashIdx+1)%HASH_LEN;
if(tempHashIdx == hashIdx) return 0;
}

return 0;
}

int subarraySum(int* nums, int numsSize, int k){

int i, j, ans = 0, sum = 0, hashIdx;


hash_push(0);


for(i = 0; i < numsSize ; i++)
{
sum += nums[i];
ans += hash_find(sum-k);
hash_push(sum);

}

return ans;
}

它会在测试用例中得到错误的答案:[1,2,3]3

但是我使用“运行代码”功能来执行相同的测试用例,我得到了“已接受”。

谁能解释一下吗?

非常感谢!!

最佳答案

好的...我明白了..我应该每次在函数开始时重新初始化全局变量哈希表。

关于c - leetcode 560. 子数组和等于 K,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59118252/

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