Как найти количество уникальных элементов в массиве
Задача 2.99
Дан одномерный массив А неупорядоченных целых чисел. Вывести на экран количество уникальных элементов в массиве.
Это не такая простая задача, как может показаться на первый взгляд. Даже мне пришлось немного поломать голову — с наскока сделать не удалось.
Но в этом и смысл задач — учиться искать решения.
Итак, я нашёл, может и не самое лучшее, но рабочее решение, для которого я использовал два одинаковых массива — один с числами, а другой — для индексов.
То есть массив А содержит числа, а в массив В я буду записывать индексы массива А совпадающих (не уникальных) элементов. Для уникальных элементов индексы в массиве В будут равны нулю. Таким образом, после поиска совпадений, у меня получится массив В такой же размерности, как и исходный массив. Но элементы с нулевым значением в массиве В будут соответствовать уникальным элементам в массиве А. И, подсчитав нулевые элементы в массиве В, мы сможем определить количество уникальных элементов в массиве А.
Сложновато? Ну да, не очень красиво. Но это первое решение, которое пришло в голову. Обычно программы так и пишутся:
- Сначала быстро создаётся версия, которая будет хоть как-то работать, чтобы можно было побыстрее начать её использовать.
- А потом выпускаются новые версии с доработками. И так до бесконечности.
ПРИМЕЧАНИЕ
В примерах я использую глобальные массивы, хотя это и не очень приветствуется. Обычно стараются в таких случаях передавать массивы в функцию в качестве параметра. Однако в этом случае новички могут столкнуться с трудностями, преодоление которых описано здесь.
Подробно описывать решение не буду — см. комментарии в исходных кодах и видео выше.
Примеры программ на Паскале и С++.
ПРИМЕЧАНИЕ
Программа на С++ несколько отличается от программы на Паскале. Во-первых, вместо выделения цветом я использовал знак * для обозначения одинаковых чисел (потому как в С++ использовать цвет сложнее, чем в Паскале, если хотите знать как — читайте мою книгу “Основы С++”). Во-вторых, в С++ индексация массивов начинается с нуля, поэтому мы не можем использовать ноль в массиве В, и применяем -1. Есть и другие особенности, но о них я уже говорить не буду.
ВНИМАНИЕ!
Если вам что-то осталось непонятно, то советую почитать книги “Основы программирования” и “Основы С++”.
Python | Получить уникальные значения из списка
Учитывая список, выведите все уникальные номера в любом порядке.
Примеры:
Способ 1: обход списка
Используя обход, мы можем пройти для каждого элемента в списке и проверить, находится ли элемент в списке unique_list, если его там нет, то мы можем добавить его в список unique_list. Это делается с использованием одного для цикла for и другого оператора if, который проверяет, находится ли значение в уникальном списке или нет, что эквивалентно другому для цикла.
# Программа Python для проверки, если два
# получить уникальные значения из списка
# использование обхода
# функция для получения уникальных значений
# использовать пустой список
# ход для всех элементов
# проверить, существует ли в unique_list или нет
if x not in unique_list:
for x in unique_list:
list1 = [ 10 , 20 , 10 , 30 , 40 , 40 ]
print ( «the unique values from 1st list is» )
list2 = [ 1 , 2 , 1 , 1 , 3 , 4 , 3 , 3 , 5 ]
print ( «\nthe unique values from 2nd list is» )
Выход:
Способ 2: использование Set
Используя свойство set () Python, мы можем легко проверить уникальные значения. Вставьте значения списка в набор. Set сохраняет значение только один раз, даже если оно вставлено более одного раза. После вставки всех значений в наборе с помощью list_set = set (list1) преобразуйте этот набор в список для его печати.
# Программа Python для проверки, если два
# получить уникальные значения из списка
# используя набор
JavaScript | Уникальные значения элементов в массиве
Как отобрать элементы с уникальными значениями в массиве?
У нас есть массив из чисел:
Этот массив отсортирован по возрастанию элементов, чтобы было легче его воспринимать и видеть дубликаты значений.

Массив с повторяющимися значениями в элементах — JavaScript
Мы видим, что значения элементов повторяются. Нас интересует только единичные экземпляры одного значения. То есть мы хотим удалить дубли, оставив оригиналы. Мы хотим сократить длину массива и подготовить массив для дальнейшей обработки. Как их получить?
Видео инструкция
В этом видео приводится пример создания набора уникальных элементов массива JavaScript. Ввод команд осуществляется в консоль браузера Google Chrome. Результат виден сразу.
Решение задачи
У «Глобального Объекта» JavaScript есть свойства-конструкторы Array и Set — массивы и наборы. Каждое из этих свойств является конструктором для создания экземпляров своего вида. Так, конструктор Array() создаёт экземпляры массивов, а конструктор Set() создаёт экземпляры наборов.
Для начала мы передадим наш массив в конструктор Набора. Новый набор мы можем создать только при помощи оператора new.

Набор из Массива — JavaScript
В ответ получаем объект Набора. «Внутренний Слот» (Internal Slot) — [[Entries]]. Этот слот содержит массив в котором произошли нужные нам преобразования.

Объект-прототип Set — JavaScript
Теперь нам нужно достать из этого Набора (Set) массив с уникальными элементами. Для этого будем использовать свойство from() конструктора Array .
В ответ нам приходит массив с уникальными значениями элементов

Массив с уникальными значениями элементов — JavaScript
Мы применили два конструктора и получили уникальные значения элементов в массиве. Мы избавились от дублей, тем самым укоротили длину массива. Это очень полезное решение, когда дело касается обхода каждого элемента массива (например, обхода URL адресов из массива).