数组去重法,详细描述
时间: 2024-05-24 15:09:08 浏览: 47
数组去重是指将一个数组中重复的元素删除,只保留一个。常用的数组去重方法有两种:使用双重循环和使用哈希表。
1. 双重循环去重法:
遍历数组中的每一个元素,再从该元素后面的元素开始遍历,如果有与该元素相同的元素,则将该元素删除。这种方法的时间复杂度为O(n^2),效率较低。
2. 哈希表去重法:
使用哈希表来存储数组中出现过的元素。遍历数组中的每个元素,判断该元素是否已经在哈希表中出现过,如果出现过则删除该元素,否则将该元素添加到哈希表中。由于哈希表的查询和插入操作的时间复杂度都为O(1),因此这种方法的时间复杂度为O(n),效率较高。
下面是使用哈希表去重法的示例代码:
```
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5, 1, 2, 3};
int n = sizeof(arr) / sizeof(int);
unordered_set<int> s;
for (int i = 0; i < n; i++) {
if (s.find(arr[i]) != s.end()) {
// 如果该元素已经出现过,则删除该元素
arr[i] = arr[n-1];
n--;
i--;
} else {
// 将该元素添加到哈希表中
s.insert(arr[i]);
}
}
// 输出去重后的数组
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
阅读全文