思路
1.使用数组构建哈希表,利用数组下表为哈希值。对出现的数字,对应的下标处置零,若某处哈希表函数已经为0,则重复出现。
#注意点
1.动态申请数组空间
int* arr = (int*)calloc(numsSize, sizeof(int));//动态申请数组空间并初始化为0
2.头文件
#include <malloc.h>
代码
#include <stdio.h>
#include <malloc.h>
int findRepeatNumber(int* nums, int numsSize);
int main()
{
int nums[7] = { 2,3,1,0,2,5,3 };
int numsSize = 7;
int result;
result = findRepeatNumber(nums, numsSize);
printf("%d", result);
return 0;
}
int findRepeatNumber(int* nums, int numsSize) {
int* arr = (int*)calloc(numsSize, sizeof(int));
int i;
for (i = 0; i < numsSize; i++) {
if (arr[nums[i]] == 1) {
int a = nums[i];
free(arr);
return a;
}
else
arr[nums[i]] = 1;
}
}