查找 C++ 中不受范围限制的给定数组中的重复项
假设我们有一个 N 个整数的数组。这里我们要打印给定数组的重复项。如果不存在这样的重复项,则返回-1。所以如果数组如下所示 [12, 15, 12, 3, 6, 12, 3, 48, 56, 8, 48],那么重复项为:[12、3、48]
此处我们将在 C++ 中使用无序映射。所以一开始取一个元素时,先检查它是否在映射中,如果存在,则直接打印为重复项,否则将其添加到映射中。
示例
#include<iostream>
#include<unordered_map>
using namespace std;
void displayDuplicates(int arr[], int n) {
unordered_map<int, int> occurrence;
for (int i=0; i<n; i++)
occurrence[arr[i]]++;
bool duplicate = false;
unordered_map<int, int>:: iterator itr;
for (itr=occurrence.begin(); itr!=occurrence.end(); itr++) {
if (itr->second > 1) {
cout << itr->first << " ";
duplicate = true;
}
}
if (duplicate == false)
cout << "-1";
}
int main() {
int arr[] = {12, 15, 12, 3, 6, 12, 3, 48, 56, 8, 48};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Duplicate elements are: ";
displayDuplicates(arr, n);
}输出
Duplicate elements are: 12 3 48
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP