Четыре задачи на словари, множества и два указателя.
⏱️ ~45 мин·Начальный·📚 3 урока
Бытовая аналогия: множество как «список гостей»
МножествоКоллекция уникальных элементов без порядка: {1, 2, 3}. По-английски set. (set) — это как списокИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list. приглашённых на входе в клуб. Охранник мгновенно проверяет: «ты в списке?» — и не перечитывает его целиком от начала. Поэтому проверка «есть ли элемент в множестве» работает за O(1), а в обычном списке охраннику пришлось бы каждый раз читать весь список (O(n)).
Финальный блок тренажёра — задачи в духе настоящего LeetCode Easy. Здесь пригодятся словариКоллекция пар «ключ → значение»: {"a": 1}. Быстрый доступ по ключу. По-английски dict., множества и приём «два указателя» из модуля об алгоритмах.
Заданиесредняярешение.py
Задача 9. Напишите has_duplicate(nums) — True, если в списке есть повторяющееся число, иначе False. Цель — O(n) через множество.
Заданиесредняярешение.py
Задача 10. Напишите first_unique(s) — возвращает первый символ строки, который встречается ровно один раз. Если такого нет — верните пустую строку "". Пример: "leetcode" → "l".
Заданиесредняярешение.py
Задача 11. Напишите is_palindrome_num(n) — True, если число читается одинаково слева направо и наоборот (например, 121). Отрицательные — всегда False.
Заданиесредняярешение.py
Задача 12. Напишите two_sum_sorted(nums, target) для отсортированного списка: верните индексы двух чисел, дающих target, приёмом «два указателя» за O(n). Гарантируется одно решение.
⚠️ Частые ошибки новичков
В задаче 10 частая ошибка — искать уникальный символ за один проход. Так не выйдет: чтобы узнать, что буква «l» встречается ровно раз, нужно сначала пройти всюстрокуТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str).. Поэтому проходов два: первый считает частоты, второй ищет первую букву с частотой 1. В задаче 12 с двумя указателями легко зациклиться, забыв сдвигать указатель — следите, чтобы в каждой ветке left или right двигался.
💡Совет
Решили все 12? Вы готовы к LeetCode 💪. В следующем модуле разберём ещё несколько реальных задач Easy и Medium — а затем составим план тренировок.
❓Проверь себя
Какая структура данных даёт проверку «есть ли элемент» за O(1)?
Почему задача «первый уникальный символ» требует двух проходов по строке?
В приёме «два указателя» на отсортированном списке: сумма больше target — что делать?
ℹ️Важно
✅ Что вы узнали
Множество (set) даёт мгновенную проверку наличия — основа поиска дубликатов за O(n).
Подсчёт частот в словарь решает задачи об уникальных символах (в два прохода).
Палиндром числа удобно проверять через str(n) == str(n)[::-1].
«Два указателя» на отсортированном списке находят пару за O(n) без вложенных цикловКонструкция, повторяющая блок кода: for перебирает элементы, while — пока условие истинно..
Комментарии
Загрузка…
Загрузка комментариев…