C语言找出数组中重复的数字
时间: 2024-10-14 14:05:13 浏览: 23
C语言查找数组里数字重复次数的方法
在C语言中,查找数组中重复的数字通常需要额外的数据结构,如哈希表或集合,因为C语言本身并不支持直接判断数组元素是否唯一的特性。以下是一个简单的示例,使用哈希表(这里假设我们有一个整数数组`arr[]`和其长度`n`):
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
bool isDuplicate(int arr[], int n, int key) {
for (int i = 0; i < n; i++) {
if (arr[i] == key)
return true;
}
return false;
}
void findDuplicates(int arr[], int n) {
bool hash[MAX_SIZE] = {false};
for (int i = 0; i < n; i++) {
if (hash[arr[i]])
printf("%d occurs more than once\n", arr[i]);
else
hash[arr[i]] = true;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 2, 6, 7, 8, 9, 4};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Array elements with duplicates:\n");
findDuplicates(arr, n);
return 0;
}
```
在这个例子中,我们首先初始化一个布尔数组`hash`,然后遍历输入数组。如果当前元素已经在哈希表中(即`hash[arr[i]]`为真),说明它是个重复的数字;否则,将其标记为已查看。这种方法的时间复杂度大约是O(n),其中n是数组长度。
阅读全文