Если мы считаем, что дубликатов может быть больше двух для случая, подобного: {2,3,2,2,2,5,5,7,7}, здесь нам нужно создать хеш-таблицу, а затем искать без дубликатов
Использование контейнера карты STL становится очень простой задачей: (Вопрос не был помечен для C ++, но STL сделает задачу хеширования чистой). Он также может обрабатывать случаи во всех уникальных случаях.
#include <iostream>
#include <vector>
#include <iterator>
#include <map>
using namespace std;
int main(void){
map<int,int> array;
map<int,int>::iterator ii;
int arr[] = {2,3,5};
vector<int> unique_list;
int size = sizeof(arr)/sizeof(arr[0]);
for(int i = 0; i<size; i++)
++array[arr[i]];
bool flag = false;
for(ii=array.begin();ii != array.end(); ++ii)
if(ii->second == 1){
flag = true;
unique_list.push_back(ii -> first);
}
if(flag == true){
cout<<"Unique element(s): ";
copy(unique_list.begin(),unique_list.end(),ostream_iterator<int>(cout," "));
}
else
cout<<"All elements have dulicate"<<endl;
return 0;
}
Сложность O (n), поэтому она все еще в линейном времени.