Этот вопрос закрыт для ответов, так как повторяет вопрос Как сравнить группу элементов в одномерном массиве в с++?
@Elementary12341

Как сравнить группу элементов в одномерном массиве в с++ и заменить определенные элементы в нем на нули?

Дан целочисленный массив а1, а2,…, аn, среди элементов которого могут быть равные. Из каждой группы равных между собой элементов нужно оставить только один, выбросив все остальные. Освободившийся хвост массива заполнить нулями. Нужно сделать циклами и нельзя использовать stl библиотеку. Нельзя использовать динамическое выделение памяти, онли статическое.

#include <iostream>
int main() {
setlocale(0, "");
int y;

std::cout << "Введите кол - во переменных в массиве: ";
std::cin >> y;

int* a = new int[y];
for (int i = 0; i < y; i++) {
std::cout << "a[" << i << "] = ";
std::cin >> a[i];
 }
}
  • Вопрос задан
  • 111 просмотров
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
https://qna.habr.com/q/1252656

если итоговое расположение элементов не важно, то самым оптимальным решением будет отсортировать массив, а потом профильтровать на месте вот так:
int i, pos = 0;
for (i = 1; i < y; i++) {
    if (a[i] != a[pos]) {
        a[++pos] = a[i];
    }
}
for (i = pos + 1; i < y; i++) {
    a[i] = 0;
}


так ты получишь асимптотику O(n * ln(n))
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы