Как удалить повторяющиеся элементы из массива в JavaScript, Python и C ++
Массив – это набор элементов с одинаковыми типами данных. Это линейная структура данных, которая хранится в непрерывных ячейках памяти. Вы можете выполнять множество основных операций с массивом, таких как вставка, удаление, поиск, обновление, обход и т. Д.
В этой статье вы узнаете, как удалить повторяющиеся элементы из отсортированных и несортированных массивов.
Как удалить повторяющиеся элементы из несортированного массива
Постановка задачи
Вам дан несортированный массив целых чисел. Вам нужно удалить повторяющиеся элементы из массива и распечатать массив с уникальными элементами.
Пример 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++ program to remove duplicate elements from an unsorted array
#include <bits/stdc++.h>
using namespace std;
// Function to remove duplicate elements from an unsorted array
void removeDuplicateElements(int arr[], int size)
{
unordered_map<int, bool> m;
for(int i=0; i<size; i++)
{
// Print the element if it's not
// present in the hash map
if (m.find(arr[i]) == m.end())
{
cout << arr[i] << " ";
}
// Insert the element in the hash map
m[arr[i]] = true;
}
cout << endl;
}
void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
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 << "Initial Array: " << endl;
printArrayElements(arr1, size1);
cout << "Array after removing duplicates: " << endl;
removeDuplicateElements(arr1, size1);
int arr2[] = {5, 6, 1, 1, 7, 5, 8, 2, 7, 8};
int size2 = sizeof(arr2)/sizeof(arr2[0]);
cout << "Initial Array: " << endl;
printArrayElements(arr2, size2);
cout << "Array after removing duplicates: " << endl;
removeDuplicateElements(arr2, size2);
int arr3[] = {32, 35, 33, 32, 33, 38, 32, 39};
int size3 = sizeof(arr3)/sizeof(arr3[0]);
cout << "Initial Array: " << endl;
printArrayElements(arr3, size3);
cout << "Array after removing duplicates: " << endl;
removeDuplicateElements(arr3, size3);
return 0;
}
Выход:
Initial Array:
23 35 23 56 67 35 35 54 76
Array after removing duplicates:
23 35 56 67 54 76
Initial Array:
5 6 1 1 7 5 8 2 7 8
Array after removing duplicates:
5 6 1 7 8 2
Initial Array:
32 35 33 32 33 38 32 39
Array after removing duplicates:
32 35 33 38 39
Программа Python для удаления повторяющихся элементов из несортированного массива
Ниже представлена программа Python для удаления повторяющихся элементов из несортированного массива:
# Python program to remove duplicate elements from an unsorted list
def removeDuplicateElements(arr, size):
m = {}
for i in range(size):
# Print the element if it's not
# present in the dictionary
if arr[i] not in m:
print(arr[i], end = " ")
# Insert the element in the dictionary
m[arr[i]] = 1
print()
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76]
size1 = len(arr1)
print("Initial List: ")
printListElements(arr1, size1)
print("List after removing duplicates: ")
removeDuplicateElements(arr1, size1)
arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8]
size2 = len(arr2)
print("Initial List: ")
printListElements(arr2, size2)
print("List after removing duplicates: ")
removeDuplicateElements(arr2, size2)
arr3 = [32, 35, 33, 32, 33, 38, 32, 39]
size3 = len(arr3)
print("Initial List: ")
printListElements(arr3, size3)
print("List after removing duplicates: ")
removeDuplicateElements(arr3, size3)
Выход:
Initial Array:
23 35 23 56 67 35 35 54 76
Array after removing duplicates:
23 35 56 67 54 76
Initial Array:
5 6 1 1 7 5 8 2 7 8
Array after removing duplicates:
5 6 1 7 8 2
Initial Array:
32 35 33 32 33 38 32 39
Array after removing duplicates:
32 35 33 38 39
Программа JavaScript для удаления повторяющихся элементов из несортированного массива
Ниже приведена программа на JavaScript для удаления повторяющихся элементов из несортированного массива:
// JavaScript program to remove duplicate elements from an unsorted array
// Function to remove duplicate elements from an unsorted array
function removeDuplicateElements(arr, size) {
let m = new Map();
for (let i = 0; i < size; i++) {
// Print the element if it's not
// present in the hash map
if (m.get(arr[i]) == null) {
document.write(arr[i] + " ");
}
// Insert the element in the hash map
m.set(arr[i], true);
}
document.write("<br>");
}
function printArrayElements(arr, size) {
for(let i=0; i<size; i++) {
document.write(arr[i] + " ");
}
document.write("<br>");
}
let arr1 = [23, 35, 23, 56, 67, 35, 35, 54, 76];
let size1 = arr1.length;
document.write("Initial Array: " + "<br>");
printArrayElements(arr1, size1);
document.write("Array after removing duplicates: " + "<br>");
removeDuplicateElements(arr1, size1);
let arr2 = [5, 6, 1, 1, 7, 5, 8, 2, 7, 8];
let size2 = arr2.length;
document.write("Initial Array: " + "<br>");
printArrayElements(arr2, size2);
document.write("Array after removing duplicates: " + "<br>");
removeDuplicateElements(arr2, size2);
let arr3 = [32, 35, 33, 32, 33, 38, 32, 39];
let size3 = arr3.length;
document.write("Initial Array: " + "<br>");
printArrayElements(arr3, size3);
document.write("Array after removing duplicates: " + "<br>");
removeDuplicateElements(arr3, size3);
Выход:
Initial Array:
23 35 23 56 67 35 35 54 76
Array after removing duplicates:
23 35 56 67 54 76
Initial Array:
5 6 1 1 7 5 8 2 7 8
Array after removing duplicates:
5 6 1 7 8 2
Initial Array:
32 35 33 32 33 38 32 39
Array after removing duplicates:
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++ program to remove duplicate elements from a sorted array
#include <iostream>
using namespace std;
// Function to remove duplicate elements from a sorted array
int removeDuplicateElements(int arr[], int size)
{
int j = 0;
for (int i = 0; i < size-1; i++)
{
// If ith element is not equal to (i+1)th element,
// then store ith value in arr[j]
if (arr[i] != arr[i+1])
{
arr[j] = arr[i];
j++;
}
}
// Storing the last value of arr in arr[j]
arr[j++] = arr[size-1];
return j;
}
void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
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 << "Initial Array: " << endl;
printArrayElements(arr1, size1);
cout << "Array after removing duplicates: " << 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 << "Initial Array: " << endl;
printArrayElements(arr2, size2);
cout << "Array after removing duplicates: " << 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 << "Initial Array: " << endl;
printArrayElements(arr3, size3);
cout << "Array after removing duplicates: " << endl;
size3 = removeDuplicateElements(arr3, size3);
printArrayElements(arr3, size3);
return 0;
}
Выход:
Initial Array:
1 1 1 2 4 6 8 8 9 9
Array after removing duplicates:
1 2 4 6 8 9
Initial Array:
1 1 2 2 3 3 4 4 5 5
Array after removing duplicates:
1 2 3 4 5
Initial Array:
10 12 12 14 16 16 18 19 19
Array after removing duplicates:
10 12 14 16 18 19
Программа Python для удаления повторяющихся элементов из отсортированного массива
Ниже представлена программа Python для удаления повторяющихся элементов из отсортированного массива:
# Python program to remove duplicate elements from a sorted array
def removeDuplicateElements(arr, size):
j = 0
for i in range(size-1):
if arr[i] != arr[i+1]:
arr[j] = arr[i]
j = j+1
arr[j] = arr[size-1]
j = j+1
return j
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
arr1 = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9]
size1 = len(arr1)
print("Initial Array:")
printListElements(arr1, size1)
print("Array after removing duplicates:")
size1 = removeDuplicateElements(arr1, size1)
printListElements(arr1, size1)
arr2 = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
size2 = len(arr2)
print("Initial Array:")
printListElements(arr2, size2)
print("Array after removing duplicates:")
size2 = removeDuplicateElements(arr2, size2)
printListElements(arr2, size2)
arr3 = [10, 12, 12, 14, 16, 16, 18, 19, 19]
size3 = len(arr3)
print("Initial Array:")
printListElements(arr3, size3)
print("Array after removing duplicates:")
size3 = removeDuplicateElements(arr3, size3)
printListElements(arr3, size3)
Выход:
Initial Array:
1 1 1 2 4 6 8 8 9 9
Array after removing duplicates:
1 2 4 6 8 9
Initial Array:
1 1 2 2 3 3 4 4 5 5
Array after removing duplicates:
1 2 3 4 5
Initial Array:
10 12 12 14 16 16 18 19 19
Array after removing duplicates:
10 12 14 16 18 19
Программа JavaScript для удаления повторяющихся элементов из отсортированного массива
Ниже приведена программа JavaScript для удаления повторяющихся элементов из отсортированного массива:
// JavaScript program to remove duplicate elements from a sorted array
// Function to remove duplicate elements from a sorted array
function removeDuplicateElements(arr, size)
{
let j = 0;
for (let i = 0; i < size-1; i++)
{
// If ith element is not equal to (i+1)th element,
// then store ith value in arr[j]
if (arr[i] != arr[i+1])
{
arr[j] = arr[i];
j++;
}
}
// Storing the last value of arr in arr[j]
arr[j++] = arr[size-1];
return j;
}
function printArrayElements(arr, size) {
for(let i=0; i<size; i++) {
document.write(arr[i] + " ");
}
document.write("<br>");
}
var arr1 = [1, 1, 1, 2, 4, 6, 8, 8, 9, 9];
var size1 = arr1.length;
document.write("Initial Array: " + "<br>");
printArrayElements(arr1, size1);
document.write("Array after removing duplicates: " + "<br>");
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("Initial Array: " + "<br>");
printArrayElements(arr2, size2);
document.write("Array after removing duplicates: " + "<br>");
size2 = removeDuplicateElements(arr2, size2);
printArrayElements(arr2, size2);
var arr3 = [10, 12, 12, 14, 16, 16, 18, 19, 19];
var size3 = arr3.length;
document.write("Initial Array: " + "<br>");
printArrayElements(arr3, size3);
document.write("Array after removing duplicates: " + "<br>");
size3 = removeDuplicateElements(arr3, size3);
printArrayElements(arr3, size3);
Выход:
Initial Array:
1 1 1 2 4 6 8 8 9 9
Array after removing duplicates:
1 2 4 6 8 9
Initial Array:
1 1 2 2 3 3 4 4 5 5
Array after removing duplicates:
1 2 3 4 5
Initial Array:
10 12 12 14 16 16 18 19 19
Array after removing duplicates:
10 12 14 16 18 19
Практикуйте задачи со строками и массивами для следующего собеседования
Проблемы со строками и массивами – одни из наиболее часто задаваемых тем на технических собеседованиях.
Если вы хотите быть как можно более подготовленным, вы должны отработать некоторые часто задаваемые проблемы, например, как проверить, является ли строка палиндромом, как проверить, является ли строка анаграммой, найти наиболее часто встречающийся символ в строке, как перевернуть массив, алгоритмы сортировки и поиска на основе массивов, как перевернуть строку и т. д.