Прошу прощения, если этот вопрос был задан, но я столкнулся с вопросом кодирования, который должен был быть простым, но я боролся. Пожалуйста, предоставьте ссылку, если уже ответили (возможно, я просто плохо разбираюсь в поиске).
Вопрос: Учитывая пример кода, заполните функцию, чтобы она возвращала только уникальные значения в массиве. Значения должны соответствовать порядку.
Пример ввода: 1, 2, 3, 10, 4, 3, 2, 10, 1, 11, 6
Пример вывода: 1 2 3 10 4 11 6
Ниже представлено мое решение, но я не могу придумать простое решение, которое не включает использование вектора для хранения уникальных значений. Тестировщику не понравилось использование вектора, поэтому я могу только предположить, что дополнительные заголовки / библиотеки были неприемлемыми. Какие-нибудь другие решения? Я предполагаю, что тестировщик искал массив для фильтрации на месте.
#include <iostream>
#include <vector> //I was not allowed to add this...
//Function to fill in...
int fxn(int *a, int size)
{
std::vector<int> temp;
for(int i(0); i < size; ++i)
{
bool found(false);
for(auto j : temp)
{
if( j == a[i])
{
found = true;
break;
}
}
if(!found)
{
temp.push_back(a[i]);
}
}
int *ptr_a = &a[0];
for(auto j : temp)
{
*ptr_a = j;
++ptr_a;
}
return size - temp.size();
}
//The rest untochable...
void print(int *a, int size)
{
for(int i(0); i < size; ++i)
{
std::cout << a[i] << " ";
}
std::cout << std::endl;
}
int main(void)
{
int a[] = { 1, 2, 3, 10, 4, 3, 2, 10, 1, 11, 6 };
int size = 11;
int count = fxn(a, size);
print(a, size - count);
return 0;
}