Napisz funkcję wyszukania liczby w tablicy i jej użyj (w trybie bardzo szkolnym):
bool is_value_in_table(const int value, const int * table, const std::size_t size) {
bool result = false;
for(std::size_t i = 0; i < size; ++i) {
if (value == table[i]) {
result = true;
break;
}
}
return result;
}
Oczywiście rozwiązanie nie będzie algorytmicznie optymalne ( O(n^2) ), ale przy niewielkiej ilości danych, wystarczające.
Jeśli wiesz że zakres liczb wprowadzanych jest ograniczony, możesz użyć ustawionych bitów jako znacznika że już dane się pojawiły. Przy pełnym zakresie 32-bitowych liczb, wymaga to sporej pamięci. Da jednak rozwiązanie optymalne co do złożoności obliczeniowej ( O(1) ).
Takie rozwiązanie da także użycie zbioru (std::set). Jednak ma duży koszt stały na wyliczanie funkcji skrótu.
Rozwiązaniem pośrednim jest sortowanie zgromadzonych liczb i sprawdzenie czy nie występują obok siebie takie same. To da rozwiązanie z kosztem O(n * log(n)).