Массив - это набор элементов с одинаковыми типами данных. Это линейная структура данных, которая хранится в непрерывных ячейках памяти. Вы можете выполнять множество основных операций с массивом, таких как вставка, удаление, поиск, обновление, обход и т. Д.
В этой статье вы узнаете, как удалить повторяющиеся элементы из отсортированных и несортированных массивов.
Как удалить повторяющиеся элементы из несортированного массива
Постановка задачи
Вам дан несортированный массив целых чисел. Вам нужно удалить повторяющиеся элементы из массива и распечатать массив с уникальными элементами.
Пример 1: Пусть arr = [23, 35, 23, 56, 67, 35, 35, 54, 76]
Массив после удаления повторяющихся элементов: 23 35 56 67 54 76
Таким образом, на выходе получается 23 35 56 67 54 76.
Пример 2: Пусть arr = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8]
Массив после удаления повторяющихся элементов: 5 6 1 7 8 2
Таким образом, на выходе получается 5 6 1 7 8 2.
Подход к удалению повторяющихся элементов из несортированного массива
Вы можете удалить повторяющиеся элементы из несортированного массива, следуя приведенному ниже подходу:
- Инициализируйте хэш-карту, в которой будут храниться все уникальные элементы массива.
- Пройдите по массиву.
- Проверьте, присутствует ли элемент в массиве.
- Если элемент присутствует в массиве, продолжайте обход.
- Если элемент отсутствует в массиве, распечатайте элемент и сохраните его в хэш-карте.
Примечание: Временная сложность этого решения O (n).
Программа на C ++ для удаления повторяющихся элементов из несортированного массива
Ниже представлена программа на C ++ для удаления повторяющихся элементов из несортированного массива:
// Программа на C ++ для удаления повторяющихся элементов из несортированного массива
#включают
using namespace std;
// Функция для удаления повторяющихся элементов из несортированного массива
void removeDuplicateElements (int arr [], int size)
{
unordered_map м;
для (int i = 0; я{
// Распечатать элемент, если это не так
// присутствует в хеш-карте
если (m.find (arr [i]) == m.end ())
{
cout << arr [i] << "";
}
// Вставляем элемент в хеш-карту
m [arr [i]] = истина;
}
cout << endl;
}
void printArrayElements (int arr [], int size)
{
для (int i = 0; я{
cout << arr [i] << "";
}
cout << endl;
}
int main ()
{
int arr1 [] = {23, 35, 23, 56, 67, 35, 35, 54, 76};
int size1 = sizeof (arr1) / sizeof (arr1 [0]);
cout << "Исходный массив:" << endl;
printArrayElements (arr1, size1);
cout << "Массив после удаления дубликатов:" << endl;
removeDuplicateElements (arr1, size1);
int arr2 [] = {5, 6, 1, 1, 7, 5, 8, 2, 7, 8};
int size2 = sizeof (arr2) / sizeof (arr2 [0]);
cout << "Исходный массив:" << endl;
printArrayElements (arr2, size2);
cout << "Массив после удаления дубликатов:" << endl;
removeDuplicateElements (arr2, size2);
int arr3 [] = {32, 35, 33, 32, 33, 38, 32, 39};
int size3 = sizeof (arr3) / sizeof (arr3 [0]);
cout << "Исходный массив:" << endl;
printArrayElements (arr3, size3);
cout << "Массив после удаления дубликатов:" << endl;
removeDuplicateElements (arr3, size3);
возврат 0;
}
Выход:
Начальный массив:
23 35 23 56 67 35 35 54 76
Массив после удаления дубликатов:
23 35 56 67 54 76
Начальный массив:
5 6 1 1 7 5 8 2 7 8
Массив после удаления дубликатов:
5 6 1 7 8 2
Начальный массив:
32 35 33 32 33 38 32 39
Массив после удаления дубликатов:
32 35 33 38 39
Связанный: Как напечатать "Hello, World!" на самых популярных языках программирования
Программа Python для удаления повторяющихся элементов из несортированного массива
Ниже представлена программа Python для удаления повторяющихся элементов из несортированного массива:
# Программа Python для удаления повторяющихся элементов из несортированного списка
def removeDuplicateElements (обр., размер):
m = {}
для i в диапазоне (размер):
# Распечатать элемент, если это не так
# присутствует в словаре
если arr [i] не в m:
print (arr [i], end = "")
# Вставляем элемент в словарь
m [arr [i]] = 1
Распечатать()
def printListElements (обр., размер):
для i в диапазоне (размер):
print (arr [i], end = "")
Распечатать()
arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76]
size1 = len (arr1)
print ("Первоначальный список:")
printListElements (arr1, size1)
print ("Список после удаления дубликатов:")
removeDuplicateElements (arr1, size1)
arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8]
size2 = len (arr2)
print ("Первоначальный список:")
printListElements (arr2, size2)
print ("Список после удаления дубликатов:")
removeDuplicateElements (arr2, size2)
arr3 = [32, 35, 33, 32, 33, 38, 32, 39]
size3 = len (arr3)
print ("Первоначальный список:")
printListElements (arr3, size3)
print ("Список после удаления дубликатов:")
removeDuplicateElements (arr3, size3)
Выход:
Начальный массив:
23 35 23 56 67 35 35 54 76
Массив после удаления дубликатов:
23 35 56 67 54 76
Начальный массив:
5 6 1 1 7 5 8 2 7 8
Массив после удаления дубликатов:
5 6 1 7 8 2
Начальный массив:
32 35 33 32 33 38 32 39
Массив после удаления дубликатов:
32 35 33 38 39
Программа JavaScript для удаления повторяющихся элементов из несортированного массива
Ниже приведена программа на JavaScript для удаления повторяющихся элементов из несортированного массива:
// Программа на JavaScript для удаления повторяющихся элементов из несортированного массива
// Функция для удаления повторяющихся элементов из несортированного массива
function removeDuplicateElements (arr, size) {
let m = new Map ();
для (пусть i = 0; я // Распечатать элемент, если это не так
// присутствует в хеш-карте
if (m.get (arr [i]) == null) {
document.write (arr [i] + "");
}
// Вставляем элемент в хеш-карту
m.set (arr [i], истина);
}
document.write ("
");
}
function printArrayElements (arr, size) {
для (пусть i = 0; яdocument.write (arr [i] + "");
}
document.write ("
");
}
пусть arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76];
пусть size1 = arr1.length;
document.write ("Исходный массив:" + "
");
printArrayElements (arr1, size1);
document.write ("Массив после удаления дубликатов:" + "
");
removeDuplicateElements (arr1, size1);
пусть arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8];
пусть size2 = arr2.length;
document.write ("Исходный массив:" + "
");
printArrayElements (arr2, size2);
document.write ("Массив после удаления дубликатов:" + "
");
removeDuplicateElements (arr2, size2);
пусть arr3 = [32, 35, 33, 32, 33, 38, 32, 39];
пусть size3 = arr3.length;
document.write ("Исходный массив:" + "
");
printArrayElements (arr3, size3);
document.write ("Массив после удаления дубликатов:" + "
");
removeDuplicateElements (arr3, size3);
Выход:
Начальный массив:
23 35 23 56 67 35 35 54 76
Массив после удаления дубликатов:
23 35 56 67 54 76
Начальный массив:
5 6 1 1 7 5 8 2 7 8
Массив после удаления дубликатов:
5 6 1 7 8 2
Начальный массив:
32 35 33 32 33 38 32 39
Массив после удаления дубликатов:
32 35 33 38 39
Связанный: Как подсчитать количество вхождений данного символа в строку
Как удалить повторяющиеся элементы из отсортированного массива
Постановка задачи
Вам дан отсортированный массив целых чисел. Вам нужно удалить повторяющиеся элементы из массива и распечатать массив с уникальными элементами.
Пример 1: Пусть arr = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9]
Массив после удаления повторяющихся элементов: 1 2 4 6 8 9
Таким образом, на выходе получим 1 2 4 6 8 9.
Пример 2: Пусть arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
Массив после удаления повторяющихся элементов: 1 2 3 4 5
Таким образом, на выходе получим 1 2 3 4 5.
Подход к удалению повторяющихся элементов из отсортированного массива
Вы можете удалить повторяющиеся элементы из отсортированного массива, следуя приведенному ниже подходу:
- Инициализируйте индексные переменные i и j с 0.
- Итерировать массив.
- Если i-й элемент не равен (i + 1) -ому элементу, сохраните i-е значение в arr [j] и увеличьте значение j.
- Увеличивайте значение i на каждой итерации.
- Сохраните последнее значение arr в arr [j].
- Наконец, верните новый размер массива, то есть j. Уникальные элементы будут храниться в массиве от индекса 0 до j-1.
Примечание: Временная сложность этого решения O (n).
Программа C ++ для удаления повторяющихся элементов из отсортированного массива
Ниже представлена программа на C ++ для удаления повторяющихся элементов из отсортированного массива:
// Программа на C ++ для удаления повторяющихся элементов из отсортированного массива
#включают
using namespace std;
// Функция для удаления повторяющихся элементов из отсортированного массива
int removeDuplicateElements (int arr [], int size)
{
int j = 0;
для (int i = 0; я {
// Если i-й элемент не равен (i + 1) -ому элементу,
// затем сохраняем i-е значение в arr [j]
если (arr [i]! = arr [i + 1])
{
arr [j] = arr [i];
j ++;
}
}
// Сохранение последнего значения arr в arr [j]
arr [j ++] = arr [размер-1];
return j;
}
void printArrayElements (int arr [], int size)
{
для (int i = 0; я{
cout << arr [i] << "";
}
cout << endl;
}
int main ()
{
int arr1 [] = {1, 1, 1, 2, 4, 6, 8, 8, 9, 9};
int size1 = sizeof (arr1) / sizeof (arr1 [0]);
cout << "Исходный массив:" << endl;
printArrayElements (arr1, size1);
cout << "Массив после удаления дубликатов:" << endl;
size1 = removeDuplicateElements (arr1, size1);
printArrayElements (arr1, size1);
int arr2 [] = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5};
int size2 = sizeof (arr2) / sizeof (arr2 [0]);
cout << "Исходный массив:" << endl;
printArrayElements (arr2, size2);
cout << "Массив после удаления дубликатов:" << endl;
size2 = removeDuplicateElements (arr2, size2);
printArrayElements (arr2, size2);
int arr3 [] = {10, 12, 12, 14, 16, 16, 18, 19, 19};
int size3 = sizeof (arr3) / sizeof (arr3 [0]);
cout << "Исходный массив:" << endl;
printArrayElements (arr3, size3);
cout << "Массив после удаления дубликатов:" << endl;
size3 = removeDuplicateElements (arr3, size3);
printArrayElements (arr3, size3);
возврат 0;
}
Выход:
Начальный массив:
1 1 1 2 4 6 8 8 9 9
Массив после удаления дубликатов:
1 2 4 6 8 9
Начальный массив:
1 1 2 2 3 3 4 4 5 5
Массив после удаления дубликатов:
1 2 3 4 5
Начальный массив:
10 12 12 14 16 16 18 19 19
Массив после удаления дубликатов:
10 12 14 16 18 19
Программа Python для удаления повторяющихся элементов из отсортированного массива
Ниже представлена программа Python для удаления повторяющихся элементов из отсортированного массива:
# Программа Python для удаления повторяющихся элементов из отсортированного массива
def removeDuplicateElements (обр., размер):
j = 0
для i в диапазоне (размер-1):
если arr [i]! = arr [i + 1]:
arr [j] = arr [i]
j = j + 1
arr [j] = arr [размер-1]
j = j + 1
вернуть j
def printListElements (обр., размер):
для i в диапазоне (размер):
print (arr [i], end = "")
Распечатать()
arr1 = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9]
size1 = len (arr1)
print ("Начальный массив:")
printListElements (arr1, size1)
print ("Массив после удаления дубликатов:")
size1 = removeDuplicateElements (arr1, size1)
printListElements (arr1, size1)
arr2 = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
size2 = len (arr2)
print ("Начальный массив:")
printListElements (arr2, size2)
print ("Массив после удаления дубликатов:")
size2 = removeDuplicateElements (arr2, size2)
printListElements (arr2, size2)
arr3 = [10, 12, 12, 14, 16, 16, 18, 19, 19]
size3 = len (arr3)
print ("Начальный массив:")
printListElements (arr3, size3)
print ("Массив после удаления дубликатов:")
size3 = removeDuplicateElements (arr3, size3)
printListElements (arr3, size3)
Выход:
Начальный массив:
1 1 1 2 4 6 8 8 9 9
Массив после удаления дубликатов:
1 2 4 6 8 9
Начальный массив:
1 1 2 2 3 3 4 4 5 5
Массив после удаления дубликатов:
1 2 3 4 5
Начальный массив:
10 12 12 14 16 16 18 19 19
Массив после удаления дубликатов:
10 12 14 16 18 19
Связанный: Введение в алгоритм сортировки слиянием
Программа JavaScript для удаления повторяющихся элементов из отсортированного массива
Ниже приведена программа JavaScript для удаления повторяющихся элементов из отсортированного массива:
// Программа на JavaScript для удаления повторяющихся элементов из отсортированного массива
// Функция для удаления повторяющихся элементов из отсортированного массива
функция removeDuplicateElements (размер, размер)
{
пусть j = 0;
для (пусть i = 0; я {
// Если i-й элемент не равен (i + 1) -ому элементу,
// затем сохраняем i-е значение в arr [j]
если (arr [i]! = arr [i + 1])
{
arr [j] = arr [i];
j ++;
}
}
// Сохранение последнего значения arr в arr [j]
arr [j ++] = arr [размер-1];
return j;
}
function printArrayElements (arr, size) {
для (пусть i = 0; яdocument.write (arr [i] + "");
}
document.write ("
");
}
var arr1 = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9];
var size1 = arr1.length;
document.write ("Исходный массив:" + "
");
printArrayElements (arr1, size1);
document.write ("Массив после удаления дубликатов:" + "
");
size1 = removeDuplicateElements (arr1, size1);
printArrayElements (arr1, size1);
var arr2 = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5];
var size2 = arr2.length;
document.write ("Исходный массив:" + "
");
printArrayElements (arr2, size2);
document.write ("Массив после удаления дубликатов:" + "
");
size2 = removeDuplicateElements (arr2, size2);
printArrayElements (arr2, size2);
var arr3 = [10, 12, 12, 14, 16, 16, 18, 19, 19];
var size3 = arr3.length;
document.write ("Исходный массив:" + "
");
printArrayElements (arr3, size3);
document.write ("Массив после удаления дубликатов:" + "
");
size3 = removeDuplicateElements (arr3, size3);
printArrayElements (arr3, size3);
Выход:
Связанный: Как найти наиболее часто встречающийся символ в строке
Начальный массив:
1 1 1 2 4 6 8 8 9 9
Массив после удаления дубликатов:
1 2 4 6 8 9
Начальный массив:
1 1 2 2 3 3 4 4 5 5
Массив после удаления дубликатов:
1 2 3 4 5
Начальный массив:
10 12 12 14 16 16 18 19 19
Массив после удаления дубликатов:
10 12 14 16 18 19
Попрактикуйтесь в задачах со строками и массивами для следующего собеседования
Проблемы со строками и массивами - одни из наиболее часто задаваемых тем на технических собеседованиях.
Если вы хотите быть как можно более подготовленными, вы должны попрактиковаться в решении некоторых часто задаваемых задач, например, как проверить, является ли строка палиндромом, как проверить, является ли строка палиндромом. анаграмма, найти наиболее часто встречающийся символ в строке, как перевернуть массив, алгоритмы сортировки и поиска на основе массивов, как перевернуть строку, и т.п.
Узнайте, как перевернуть строку назад на начало на трех разных языках.
Читать далее
- Программирование
- JavaScript
- Python
- Учебники по кодированию
Юврадж - студент бакалавриата по информатике в Университете Дели, Индия. Он увлечен веб-разработкой Full Stack. Когда он не пишет, он исследует глубину различных технологий.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться