一个数组中有n个元素,其中r对数据是重复的。使用C语言实现函数,去除重复元素,输出去重后的结果。要求算法时间复杂度不超过O(n))
时间: 2023-03-26 10:01:50 浏览: 160
数组重复元素去除
可以使用哈希表来实现去重,时间复杂度为O(n)。具体实现如下:
```c
void removeDuplicates(int arr[], int n) {
int hash[n];
memset(hash, , sizeof(hash)); // 初始化哈希表为
int j = ;
for (int i = ; i < n; i++) {
if (hash[arr[i]] == ) { // 如果哈希表中该元素未出现过
hash[arr[i]] = 1; // 标记该元素已出现过
arr[j++] = arr[i]; // 将该元素加入结果数组中
}
}
for (int i = j; i < n; i++) {
arr[i] = ; // 将剩余的元素置为
}
}
```
其中,哈希表的大小为n,每个元素的值为或1,表示该元素是否出现过。遍历原数组,如果哈希表中该元素未出现过,则将其加入结果数组中,并标记为已出现过。最后将剩余的元素置为即可。
阅读全文