使用C++移除给定数字中的重复数字

1. 简介

在进行数据处理时,重复数字往往会造成数据的混乱和错误,需要将其进行清理。本文将介绍使用C++语言移除给定数字中的重复数字的方法和步骤。

2. 移除重复数字的方法

移除给定数字中的重复数字,可以使用哈希表和集合的方法进行实现,具体步骤如下:

2.1 使用哈希表的方法

哈希表可以通过记录数字出现的次数,来实现移除重复数字的目的。代码实现如下:

#include <iostream>

#include <unordered_map>

using namespace std;

void removeDuplicatesHash(int arr[], int n) {

unordered_map<int, int> umap;

for (int i = 0; i < n; i++) {

umap[arr[i]]++;

}

cout << "移除重复数字后的数组为:\n";

for (auto x : umap) {

cout << x.first << " ";

}

}

int main() {

int arr[] = {5, 3, 2, 5, 2, 1, 8, 9, 5};

int n = sizeof(arr) / sizeof(arr[0]);

removeDuplicatesHash(arr, n);

return 0;

}

哈希表的时间复杂度为O(n),空间复杂度为O(n)。

2.2 使用集合的方法

集合可以保证数字的唯一性,可以通过遍历数组,并将数字插入集合的方式,来实现移除重复数字的目的。代码实现如下:

#include <iostream>

#include <set>

using namespace std;

void removeDuplicatesSet(int arr[], int n) {

set<int> s;

for (int i = 0; i < n; i++) {

s.insert(arr[i]);

}

cout << "移除重复数字后的数组为:\n";

for (auto x : s) {

cout << x << " ";

}

}

int main() {

int arr[] = {5, 3, 2, 5, 2, 1, 8, 9, 5};

int n = sizeof(arr) / sizeof(arr[0]);

removeDuplicatesSet(arr, n);

return 0;

}

使用集合的方法的时间复杂度为O(nlogn),空间复杂度为O(n)。

3. 代码实现和测试

结合哈希表和集合的优缺点,我们可以针对不同的情况选用不同的方法进行去重。下面,我们将以上面示例为例,分别使用哈希表和集合的方法进行去重:

3.1 使用哈希表进行去重

通过哈希表的方法,将示例数组中的重复数字移除:

#include <iostream>

#include <unordered_map>

using namespace std;

void removeDuplicatesHash(int arr[], int n) {

unordered_map<int, int> umap;

for (int i = 0; i < n; i++) {

umap[arr[i]]++;

}

cout << "移除重复数字后的数组为:\n";

for (auto x : umap) {

cout << x.first << " ";

}

}

int main() {

int arr[] = {5, 3, 2, 5, 2, 1, 8, 9, 5};

int n = sizeof(arr) / sizeof(arr[0]);

cout << "原始数组为:\n";

for (int i = 0; i < n; i++) {

cout << arr[i] << " ";

}

cout << "\n";

removeDuplicatesHash(arr, n);

return 0;

}

输出结果为:

原始数组为:

5 3 2 5 2 1 8 9 5

移除重复数字后的数组为:

1 2 3 5 8 9

3.2 使用集合进行去重

通过集合的方法,将示例数组中的重复数字移除:

#include <iostream>

#include <set>

using namespace std;

void removeDuplicatesSet(int arr[], int n) {

set<int> s;

for (int i = 0; i < n; i++) {

s.insert(arr[i]);

}

cout << "移除重复数字后的数组为:\n";

for (auto x : s) {

cout << x << " ";

}

}

int main() {

int arr[] = {5, 3, 2, 5, 2, 1, 8, 9, 5};

int n = sizeof(arr) / sizeof(arr[0]);

cout << "原始数组为:\n";

for (int i = 0; i < n; i++) {

cout << arr[i] << " ";

}

cout << "\n";

removeDuplicatesSet(arr, n);

return 0;

}

输出结果为:

原始数组为:

5 3 2 5 2 1 8 9 5

移除重复数字后的数组为:

1 2 3 5 8 9

4. 总结

本文介绍了使用C++语言移除给定数字中的重复数字的方法和步骤,分别使用哈希表和集合的方法进行了实现。通过对比两种方法的优缺点,可以根据实际情况,在不同的场景下采用不同的方法进行去重。代码实现和测试结果表明,这两种方法都能够有效地移除给定数字中的重复数字,达到预期效果。

后端开发标签