Competitive Programming Academy · Урок

Множества для проверки принадлежности и удаления дублей

Проверяйте существование за константное время

Урок 1 из 413 шагов

«Множества для проверки принадлежности и удаления дублей» — бесплатный урок Competitive Programming Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Competitive Programming Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Competitive Programming Academy содержит 4 уроков всего.

Что даёт множество

Множество хранит уникальные элементы без определённого порядка, а его главное преимущество — проверка «есть ли здесь это значение?» примерно за константное время. ⚡

Почему не использовать просто список

Проверка принадлежности в списке просматривает каждый элемент, поэтому занимает O(n). Множество хеширует значение и сразу переходит к нужной корзине.

Создайте множество

Создайте его с помощью фигурных скобок или вызова set(). Пустое множество нужно создавать через set(), потому что обычные фигурные скобки создают словарь.

seen = set()
vowels = {'a', 'e', 'i', 'o', 'u'}

Проверка принадлежности

Используйте ключевое слово in, чтобы узнать, присутствует ли значение. Для множества это быстрый поиск, ради которого стоит выбрать именно эту структуру.

if x in seen:
    print('already saw it')

Добавление элементов

Добавьте значение с помощью add. Повторное добавление того же значения ничего не меняет, поэтому множество само сохраняет все элементы уникальными.

seen.add(x)

Мгновенное удаление дубликатов

Передайте любой итерируемый объект в set(), и дубликаты исчезнут за один проход. Это самый короткий способ удалить дубликаты из входных данных в соревнованиях.

unique = set(nums)

Быстро посчитайте различные значения

Распространённая задача — «сколько различных значений?». Оберните данные в множество и получите его длину одной строкой.

distinct_count = len(set(nums))

Отслеживайте уже встречавшиеся значения

Создавайте множество во время цикла, чтобы найти первый повтор. Если значение уже есть в множестве, вы сразу обнаружили дубликат.

for v in nums:
    if v in seen:
        return True
    seen.add(v)

Математика множеств бесплатно

Множества напрямую поддерживают пересечение, объединение и разность. Сравнение двух групп превращается в один оператор вместо вложенных циклов.

common = a & b
only_a = a - b

Удаление и discard

Используйте discard, чтобы безопасно удалить элемент, даже если значение отсутствует, тогда как удаление отсутствующего ключа вызывает ошибку. Выбирайте подходящий вариант в зависимости от цели.

seen.discard(x)

Только хешируемые элементы

Множества требуют хешируемых элементов, поэтому списки в них помещать нельзя, а кортежи можно. Если нужно сохранить список, сначала преобразуйте его в кортеж.

grid_seen = set()
grid_seen.add((row, col))

Быстрая проверка

Вам нужно узнать, сколько различных чисел встречается в списке.

Итоги

Множество обеспечивает проверку принадлежности за O(1), мгновенное удаление дубликатов, а также простое нахождение пересечения или разности. Используйте его всякий раз, когда спрашиваете: «Встречалось ли мне это раньше?». 🚀

Можно начать бесплатно

Изучай Python с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Множества для проверки принадлежности и удаления дублей» бесплатный?

Да — полный текст урока «Множества для проверки принадлежности и удаления дублей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Competitive Programming Academy, подпишись на CoddyKit PRO. Курс Competitive Programming Academy содержит 4 уроков всего.

Чему я научусь в уроке «Множества для проверки принадлежности и удаления дублей»?

Проверяйте существование за константное время Ты практикуешь Competitive Programming Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Competitive Programming Academy?

Предыдущий опыт не требуется. Competitive Programming Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Множества для проверки принадлежности и удаления дублей»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Competitive Programming Academy?

Да. Каждый урок Competitive Programming Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Множества для проверки принадлежности и удаления дублей
  2. Словари как таблицы поиска
  3. Counter и defaultdict в действии
  4. Группировка и распределение по корзинам с помощью map
← Назад к Competitive Programming Academy