Руководство по очистке алгоритма (LeetCode)
01. Введение в проект
Учебник для объяснения базовых знаний «Алгоритма и структуры данных» и подробный анализ более 800 вопросов в «LeetCode». Этот проект легко понять, и в нем нет больших скачков в мышлении. Для облегчения понимания в проекте используются некоторые иллюстрации и примеры.
Это руководство начинается с основных структур данных и алгоритмов, а затем объясняет и анализирует конкретные темы для различных категорий структур данных и алгоритмов. Он позволяет читателям полностью освоить знания об алгоритмах посредством сочетания «базового теоретического изучения алгоритмов» и «практического обучения программированию».
В этом руководстве в качестве языка программирования используется Python, и от учащихся требуются базовые знания и опыт программирования на Python.
02. Адрес проекта
Приветствуем «Звезду ️» и «Вилку» в правом верхнем углу, это моя самая большая поддержка и воодушевление.
- Адрес GitHub: https://github.com/itcharge/LeetCode-Py.
Электронная онлайн-книга «Руководство по очистке алгоритмов», поддерживающая темный режим.
- Адрес электронной книги: https://algo.itcharge.cn.
03. Об авторе
Я программист по разработке iOS/macOS, а также учусь заочно (в настоящее время учусь) в Beihang Software Institute. Я изучал алгоритмические знания в колледже и три года участвовал в соревнованиях ACM, но мой уровень был ограничен, и мне не удалось добиться идеальных результатов. Но самым большим достижением для меня за эти три года работы в ACM стало то, что я развил свое логическое мышление и способность решать практические задачи. Эта способность заложила прочную основу для моей будущей работы и учебы.
Я начал решать вопросы по LeetCode каждый день 30 марта 2021 года. К 8 июня 2022 года я решил более 1000 вопросов и выполнил более 800 решений задач. Усердно работайте, чтобы решить более 1000, 1500+, 2000+ вопросов.
Ответьте « Регистрация по алгоритму » в общедоступной учетной записи «Зарядная станция программиста» , и вы будете добавлены в группу плана регистрации по алгоритму LeetCode, чтобы сформировать команду и зарегистрироваться вместе.
- Пароль для входа в группу: Алгоритм регистрации
- Требования для вступления в группу: меньше болтовни, больше обмена и изменения заметок.
04. Заявление об авторских правах
- Это руководство доступно под лицензией Creative Attribution-NonCommercial-NoDerivs (BY-NC-ND) 4.0 International License.
- Авторские права на все вопросы в этом уроке принадлежат LeetCode и LeetCode China.
05. Содержание главы
00. Введение
- Алгоритмы и структуры данных
- Алгоритмическая сложность
- Начало работы с LeetCode и стратегиями
- Решения проблем LeetCode (лексикографическая сортировка, более 850 решений проблем)
- Решения проблем LeetCode (отсортировано по категориям, рекомендуемый список проблем ★★★)
- 100 наиболее часто задаваемых вопросов на собеседованиях LeetCode (отсортировано по категориям)
- 200 наиболее часто задаваемых вопросов на собеседованиях LeetCode (отсортировано по категориям)
01. Массив
- Основы массивов
- Основы массивов
- Массив основных вопросов
- Алгоритм сортировки массива
- пузырьковая сортировка
- сортировка выбором
- сортировка вставкой
- Сортировка холмов
- сортировка слиянием
- Быстрая сортировка
- Сортировка кучей
- сортировка по подсчету
- сортировка ведром
- Поразрядная сортировка
- Вопрос по сортировке массива
- двоичный поиск
- Знание бинарного поиска (1)
- Знание бинарного поиска (2)
- Вопрос бинарного поиска
- Двойной указатель массива
- Знание двойного указателя массива
- Вопрос о массиве с двойным указателем
- Раздвижное окно массива
- Знание скользящих окон массива
- Вопрос о скользящем окне массива
02. Связанный список
- Базовые знания связанных списков.
- Базовые знания связанных списков.
- Классические вопросы по связанному списку
- Сортировка связанного списка
- Знание сортировки связанных списков
- Вопрос о сортировке связанного списка
- Двойной указатель связанного списка
- Знание о двойных указателях связанного списка
- Вопрос с двойным указателем на связанный список
03. Стек
- Основы стека
- Основы стека
- Сложите базовые вопросы
- монотонный стек
- Знание монотонного стека
- Вопрос о монотонном стеке
04. Очередь
- Основы очереди
- Основы очереди
- Очередь основных вопросов
- приоритетная очередь
- Знание приоритетной очереди
- приоритетный вопрос в очереди
05. Хэш-таблица
- Знание хеш-таблиц
- Вопрос по хэш-таблице
06. Струна
- Основы работы со строками
- Основы работы со строками
- Строковые классические вопросы
- Сопоставление строк с одним шаблоном
- Алгоритм грубой силы
- Алгоритм Рабина Карпа
- Алгоритм КМП
- Алгоритм Бойера Мура
- Алгоритм Хорспула
- Воскресный алгоритм
- Вопрос о сопоставлении строк с одним шаблоном
- Сопоставление нескольких строк шаблона
- Знание словарного дерева
- Вопрос о дереве словаря
- Знание автоматов переменного тока
- Проблема с автоматом переменного тока
- Знание суффиксного массива
- Вопрос о массиве суффиксов
07. Дерево
- Бинарное дерево
- Базовые знания о деревьях и бинарных деревьях.
- Навыки обхода двоичных деревьев
- Задача обхода двоичного дерева
- Знание восстановления двоичных деревьев
- Проблема восстановления двоичного дерева
- двоичное дерево поиска
- Знание бинарного дерева поиска
- Вопрос о дереве двоичного поиска
- Дерево сегментов
- Знание дерева сегментов
- Вопрос о дереве сегментов линий
- древовидный массив
- Знание древовидных массивов
- Вопрос о древовидном массиве
- И искать в коллекции
- и искать знания
- И проверьте вопросы
08. Теория графов
- Базовые знания графиков
- Определение и классификация графов
- Структура хранения графов и применение задачи
- Обход графа
- Поиск знаний в глубину на графах
- Задача поиска в глубину для графов
- Поиск знаний в ширину в графах
- Первый поисковый вопрос по ширине графика
- Знание топологической сортировки графов
- Вопрос о топологической сортировке графа
- Охватывающее дерево графа
- Минимальные знания связующего дерева для графов
- Задача о минимальном остовном дереве для графов
- кратчайший путь
- Знания о кратчайшем пути из одного источника (1)
- Знания о кратчайшем пути из одного источника (2)
- Задача о кратчайшем пути из одного источника
- Знания о кратчайшем пути из нескольких источников
- Проблема кратчайшего пути с несколькими источниками
- Знание кратчайшего пути
- Второй вопрос по короткому пути
- Знание системы дифференциальных ограничений
- Вопросы о системе дифференциальных ограничений
- двудольный граф
- Базовые знания двудольных графов.
- Основные вопросы о двудольных графах
- Максимальное знание соответствия двудольного графа
- Венгерский алгоритм
- Алгоритм Хопкрофта-Карпа
- Задача о максимальном сопоставлении двудольного графа
09. Основной алгоритм
- Алгоритм перечисления
- Знание алгоритмов перечисления
- Вопросы по алгоритму перебора
- рекурсивный алгоритм
- Знание рекурсивных алгоритмов
- Вопросы по рекурсивному алгоритму
- алгоритм разделяй и властвуй
- Разделяй и властвуй, знание алгоритмов
- Вопросы по алгоритму «разделяй и властвуй»
- Алгоритм возврата
- Знание алгоритма обратного отслеживания
- Вопросы по алгоритму возврата
- жадный алгоритм
- Знание жадных алгоритмов
- Вопрос о жадном алгоритме
- Битовые операции
- Знание битовых операций
- Вопросы по битовым операциям
10. Динамическое программирование
- Основы динамического программирования
- Основы динамического программирования
- Основные вопросы по динамическому программированию
- Мемоизированный поиск
- Знание поиска в памяти
- Вопросы для поиска в памяти
- Линейный ДП
- Знания линейного DP (1)
- Знания линейного DP (2)
- Вопрос о линейном DP
- проблема с рюкзаком
- Знание задач о рюкзаке (1)
- Знания о проблемах с рюкзаком (2)
- Знания о проблемах с рюкзаком (3)
- Знания о проблеме с рюкзаком (4)
- Знания о проблемах с рюкзаком (5)
- вопросы о рюкзаке
- Интервальный ДП
- Знание интервального DP
- Вопрос по интервальному DP
- Дерево ДП
- Знание дерева DP
- Вопрос о дереве DP
- Государственное сжатие DP
- Знания о сжатии состояния DP
- Вопрос о состоянии сжатия DP
- Граф ДП
- Подсчет знаний DP
- Подсчет вопросов DP
- Цифровой ДП
- Знание цифрового DP
- Вопросы по цифровому DP
- Вероятность ДП
- Знание вероятности DP
- Вопросы о вероятностном DP
- Оптимизация динамического программирования
- Оптимизация монотонного стека/приоритетной очереди
- Оптимизация уклона
- Оптимизация четырехстороннего неравенства
- Проблема оптимизации динамического программирования
11. Дополнительный контент
- График завершения контента
12. Решения проблем LeetCode (выполнено 860 вопросов)