c语言数组如何消除相同元素
时间: 2023-09-06 21:01:19 浏览: 86
C语言数组消除相同元素的一种常见方法是通过遍历数组并使用一个辅助数组来记录非重复的元素。具体步骤如下:
1. 声明一个辅助数组,并初始化其中所有元素为0,该辅助数组用于记录每个元素的出现次数。
2. 遍历原数组,对于每个元素,将其作为索引,在辅助数组中对应位置的值加1,表示该元素已经出现一次。
3. 再次遍历辅助数组,将其值大于0的索引对应的元素复制到一个新数组中,即得到一个没有重复元素的数组。
4. 可选的步骤:如果需要将结果返回到原数组中,可以将新数组中的元素逐个复制回原数组。
这种方法的时间复杂度为O(n),其中n是数组的长度。
以下是一个示例代码:
```c
#include <stdio.h>
void removeDuplicates(int arr[], int n) {
int freq[100] = {0}; // 辅助数组,用于记录每个元素的出现次数
int uniqueArr[100]; // 用于存放非重复元素的新数组
int newIndex = 0; // 新数组的索引
// 遍历原数组,更新辅助数组中对应位置的值
for(int i=0; i<n; i++) {
freq[arr[i]]++;
}
// 遍历辅助数组,将非重复元素复制到新数组中
for(int i=0; i<100; i++) {
if(freq[i] > 0) {
uniqueArr[newIndex] = i;
newIndex++;
}
}
// 可选的步骤:将新数组中的元素复制回原数组
for(int i=0; i<newIndex; i++) {
arr[i] = uniqueArr[i];
}
}
int main() {
int arr[] = {1, 2, 3, 3, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, n);
printf("去重后的数组:");
for(int i=0; i<n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:去重后的数组:1 2 3 4 5
阅读全文