C++ В массив A длиной N из всех одинаковых элементов оставьте только по одному представителю. Остальные удалите. Рассмотрите 2 варианта: а) массив упорядочен б) не упорядочен
а) Если массив упорядочен, то достаточно просто пройтись по массиву и сравнивать каждый элемент с предыдущим. Если элемент равен предыдущему, то это дубликат и его нужно удалить.
Пример кода для упорядоченного массива:
#include <iostream> void removeDuplicates(int arr[], int &n) { if (n == 0) return; int index = 0; for (int i = 1; i < n; i++) { if (arr[i] != arr[index]) { arr[++index] = arr[i]; } } n = index + 1; } int main() { int n = 8; int arr[] = {1, 1, 2, 2, 2, 3, 3, 3}; removeDuplicates(arr, n); for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } return 0; }
б) Если массив не упорядочен, то можно сначала отсортировать его, а затем применить тот же подход, что и для упорядоченного массива.
Пример кода для неупорядоченного массива:
#include <iostream> #include <algorithm> void removeDuplicates(int arr[], int &n) { if (n == 0) return; std::sort(arr, arr + n); int index = 0; for (int i = 1; i < n; i++) { if (arr[i] != arr[index]) { arr[++index] = arr[i]; } } n = index + 1; } int main() { int n = 8; int arr[] = {2, 3, 1, 3, 2, 1, 2, 3}; removeDuplicates(arr, n); for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } return 0; }
а) Если массив упорядочен, то достаточно просто пройтись по массиву и сравнивать каждый элемент с предыдущим. Если элемент равен предыдущему, то это дубликат и его нужно удалить.
Пример кода для упорядоченного массива:
#include <iostream>void removeDuplicates(int arr[], int &n) {
if (n == 0) return;
int index = 0;
for (int i = 1; i < n; i++) {
if (arr[i] != arr[index]) {
arr[++index] = arr[i];
}
}
n = index + 1;
}
int main() {
int n = 8;
int arr[] = {1, 1, 2, 2, 2, 3, 3, 3};
removeDuplicates(arr, n);
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
б) Если массив не упорядочен, то можно сначала отсортировать его, а затем применить тот же подход, что и для упорядоченного массива.
Пример кода для неупорядоченного массива:
#include <iostream>#include <algorithm>
void removeDuplicates(int arr[], int &n) {
if (n == 0) return;
std::sort(arr, arr + n);
int index = 0;
for (int i = 1; i < n; i++) {
if (arr[i] != arr[index]) {
arr[++index] = arr[i];
}
}
n = index + 1;
}
int main() {
int n = 8;
int arr[] = {2, 3, 1, 3, 2, 1, 2, 3};
removeDuplicates(arr, n);
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
return 0;
}