用C语言求数组中只出现一次的数
时间: 2024-09-28 10:09:42 浏览: 40
在C语言中,寻找数组中只出现一次的数可以使用哈希表(也称作关联数组或字典)来存储元素及其出现次数,同时遍历数组。以下是基本步骤:
1. 定义一个大小适中的数组 `hash` 或者使用动态内存分配来存放元素及其出现的次数。
2. 遍历数组,对于每个元素,检查它是否已经在 `hash` 中。如果不在,将其添加到 `hash` 并设置计数为 1;如果已在,将对应的计数加一。
3. 再次遍历数组,这次只检查计数为 1 的元素。因为它们只出现了一次。
以下是一个简单的示例代码(假设数组名为 `nums`, 元素都是整型):
```c
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100 // 假设数组最大长度
int hash[SIZE] = {0}; // 初始化所有位置为0
// 检查元素是否只出现了一次
int isUnique(int num) {
return hash[num] == 1;
}
void findSingle(int nums[], int n) {
for (int i = 0; i < n; i++) {
if (isUnique(nums[i])) {
printf("%d 只出现了一次。\n", nums[i]);
}
hash[nums[i]]++; // 更新哈希表
}
}
int main() {
int nums[] = {1, 4, 2, 4, 5, 6, 7, 2, 8, 9};
int n = sizeof(nums) / sizeof(nums[0]);
findSingle(nums, n);
return 0;
}
```
在这个例子中,`findSingle()` 函数会找到并打印出数组 `nums` 中只出现一次的数字。注意这只是一个基础解决方案,实际应用中可能需要优化哈希表的大小以及处理更复杂的数据结构。
阅读全文