Множества для проверки принадлежности и удаления дублей
Проверяйте существование за константное время
«Множества для проверки принадлежности и удаления дублей» — бесплатный урок Coding Interview Prep на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Coding Interview Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Coding Interview Prep содержит 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), мгновенное удаление дубликатов, а также простое нахождение пересечения или разности. Используйте его всякий раз, когда спрашиваете: «Встречалось ли мне это раньше?». 🚀
Изучай Coding Interview Prep с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 90
- Уроки
- 360
Часто задаваемые вопросы
Урок «Множества для проверки принадлежности и удаления дублей» бесплатный?
Да — полный текст урока «Множества для проверки принадлежности и удаления дублей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Coding Interview Prep, подпишись на CoddyKit PRO. Курс Coding Interview Prep содержит 4 уроков всего.
Чему я научусь в уроке «Множества для проверки принадлежности и удаления дублей»?
Проверяйте существование за константное время Ты практикуешь Coding Interview Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Coding Interview Prep?
Предыдущий опыт не требуется. Coding Interview Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Множества для проверки принадлежности и удаления дублей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Coding Interview Prep?
Да. Каждый урок Coding Interview Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Множества для проверки принадлежности и удаления дублей
- Словари как таблицы поиска
- Counter и defaultdict в действии
- Группировка и распределение по корзинам с помощью map