查找数组中的重复元素。 要求:编写一个函数,接受一个整数数组作为参数,并找出数组中所有重复的元素,并以数组的形式返回。用c语言代码灾现
时间: 2023-06-13 17:02:42 浏览: 114
C语言查找数组里数字重复次数的方法
5星 · 资源好评率100%
以下是一个简单的C语言实现,使用了一个哈希表来记录每个元素出现的次数,然后遍历哈希表,将出现次数大于1的元素添加到结果数组中:
```c
#include <stdio.h>
#include <stdlib.h>
int* findDuplicates(int* nums, int numsSize, int* returnSize) {
int* result = (int*)malloc(sizeof(int) * numsSize);
int resultSize = 0;
int* map = (int*)calloc(numsSize, sizeof(int));
for (int i = 0; i < numsSize; i++) {
map[nums[i] - 1]++;
if (map[nums[i] - 1] == 2) {
result[resultSize++] = nums[i];
}
}
free(map);
*returnSize = resultSize;
return result;
}
int main() {
int nums[] = {1, 2, 3, 4, 3, 2, 5, 6, 7, 5};
int numsSize = sizeof(nums) / sizeof(nums[0]);
int returnSize;
int* result = findDuplicates(nums, numsSize, &returnSize);
printf("Duplicates: ");
for (int i = 0; i < returnSize; i++) {
printf("%d ", result[i]);
}
printf("\n");
free(result);
return 0;
}
```
输出:
```
Duplicates: 3 2 5
```
阅读全文