Линткод
На сегодняшний день (22 августа 2016 г.) в LintCode Online Judge обнаружено 289 проблем. В последнее время количество проблем увеличивается. Вот классификация всех 289 задач. Дополнительные проблемы и решения можно найти в моем репозитории LeetCode-Solutions. Я буду продолжать обновлять информацию, чтобы получить полное описание и лучшие решения. Следите за обновлениями.
Алгоритмы
- Битовые манипуляции
- Множество
- Нить
- Связанный список
- Математика
- Дерево
- Куча
- Очередь
- Куча
- Хэш-таблицы
- Структура данных
- Сортировать
- Рекурсия
- Бинарный поиск
- Поиск в ширину
- Поиск в глубину
- Возврат
- Двоичные деревья поиска
- Динамическое программирование
- Жадный
- ОО Дизайн
- Проектирование системы
Битовые манипуляции
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 1 | Задача А + Б | С++ | О(1) | О(1) | Середина | | |
| 82 | Единый номер | С++ | На) | О(1) | Легкий | ЛитКод | |
| 83 | Одноместный номер II | С++ | На) | О(1) | Легкий | ЛитКод | |
| 84 | Одиночный номер III | С++ | На) | О(1) | Середина | CTCI | |
| 142 | O(1) Проверить степень 2 | С++ | О(1) | О(1) | Легкий | | |
| 179 | Обновить биты | С++ | О(1) | О(1) | Середина | CTCI | |
| 181 | Перевернуть биты | С++ | О(1) | О(1) | Легкий | CTCI | |
| 196 | Найдите недостающее число | С++ | На) | О(1) | Середина | | |
| 365 | Счет 1 в двоичном формате | С++ | О(1) | О(1) | Легкий | CTCI | |
Множество
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 6 | Объединить отсортированный массив | С++ | О (м + п) | О(1) | Легкий | ЛитКод | Два указателя |
| 8 | Поворот строки | С++ | На) | О(1) | Легкий | ЛитКод | |
| 9 | Физз Базз | С++ | На) | О(1) | Легкий | | |
| 30 | Вставить интервал | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | |
| 31 | Разделение массива | С++ | На) | О(1) | Середина | | Два указателя |
| 32 | Минимальная подстрока окна | С++ | На) | О(1) | Середина | ЛитКод | |
| 38 | Поиск в 2D-матрице II | С++ | О (м + п) | О(1) | Середина | РПИ | |
| 39 | Восстановить повернутый отсортированный массив | С++ | На) | О(1) | Легкий | | |
| 46 | Число большинства | С++ | На) | О(1) | Легкий | ЛитКод | |
| 47 | Большинство номер II | С++ | На) | О(1) | Середина | РПИ | |
| 48 | Большинство номер III | С++ | На) | Хорошо) | Середина | РПИ | |
| 49 | Сортировка писем по регистру | С++ | На) | О(1) | Середина | | Два указателя |
| 50 | Продукт массива, исключающий самого себя | С++ | На) | О(1) | Легкий | | |
| 51 | Предыдущая перестановка | С++ | На) | О(1) | Середина | | |
| 52 | Следующая перестановка | С++ | На) | О(1) | Середина | ЛитКод | |
| 57 | 3 Сумма | С++ | О(п^2) | О(1) | Середина | ЛитКод | Два указателя, сортировка |
| 58 | 4 Сумма | С++ | О(п^3) | О(1) | Середина | ЛитКод | Хэш |
| 59 | 3 Сумма Ближайший | С++ | О(п^2) | О(1) | Середина | ЛитКод | Два указателя, сортировка |
| 64 | Объединить отсортированный массив II | С++ | О (м + п) | О(1) | Легкий | ЛитКод | Два указателя |
| 100 | Удалить дубликаты из отсортированного массива | С++ | На) | О(1) | Легкий | ЛитКод | Два указателя |
| 101 | Удалить дубликаты из отсортированного массива II | С++ | На) | О(1) | Легкий | ЛитКод | Два указателя |
| 133 | Самые длинные слова | С++ | На) | На) | Легкий | | |
| 144 | Чередование положительных и отрицательных чисел | С++ | На) | О(1) | Середина | | Два указателя |
| 161 | Поворот изображения | С++ | О(п^2) | О(1) | Середина | ЛитКод | |
| 162 | Установить нули матрицы | С++ | О(м * п) | О(1) | Середина | ЛитКод | |
| 172 | Удалить элемент | С++ | На) | О(1) | Легкий | ЛитКод | Два указателя |
| 185 | Матричный зигзагообразный обход | С++ | О(м * п) | О(1) | Легкий | | |
| 189 | Первый пропавший позитив | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | Хэш |
| 190 | Следующая перестановка II | С++ | На) | О(1) | Середина | ЛитКод | |
| 200 | Самая длинная палиндромная подстрока | С++ | На) | На) | Середина | ЛитКод | Manacher's Algorithm |
| 363 | Улавливание дождевой воды | С++ | На) | О(1) | Середина | ЛитКод | Два указателя, хитрый |
| 373 | Разделение массива по нечетным и четным | С++ | На) | О(1) | Легкий | | Два указателя |
| 374 | Спиральная матрица | С++ | О(м * п) | О(1) | Середина | ЛитКод | |
| 381 | Спиральная матрица II | С++ | О(п^2) | О(1) | Середина | ЛитКод | |
| 382 | Количество треугольников | С++ | О(п^2) | О(1) | Середина | | Два указателя |
| 383 | Контейнер с большим количеством воды | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | Два указателя |
| 388 | Последовательность перестановок | С++ | О(п^2) | На) | Середина | ЛитКод | |
| 389 | Действительное судоку | С++ | О(9^2) | О(9) | Легкий | ЛитКод | |
| 404 | Сумма подмассива II | С++ | О(нлогн) | На) | Жесткий | | Два указателя, двоичный поиск |
| 405 | Сумма подматрицы | С++ | О(м * п^2) | О (м) | Жесткий | | Хэш |
| 406 | Сумма подмассива минимального размера | С++ | На) | О(1) | Середина | ЛитКод | Два указателя, двоичный поиск |
| 539 | Переместить нули | С++ | На) | О(1) | Легкий | ЛитКод | Два указателя |
Нить
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 13 | стрСтр | С++ | О (п + к) | Хорошо) | Легкий | ЛитКод | KMP Algorithm |
| 53 | Перевернуть слова в строке | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | |
| 54 | Строка в целое число (atoi) | С++ | На) | О(1) | Жесткий | ЛитКод | |
| 55 | Сравнить строки | С++ | На) | О (с) | Легкий | | |
| 78 | Самый длинный общий префикс | С++ | На) | О(1) | Середина | | |
| 157 | Уникальные персонажи | С++ | На) | О(1) | Легкий | CTCI | |
| 158 | Две строки — анаграммы | С++ | На) | О(1) | Легкий | | |
| 171 | Анаграммы | С++ | О(н *клогк) | О (м) | Легкий | ЛитКод, ЭПИ | |
| 212 | Замена пространства | С++ | На) | О(1) | Легкий | | |
| 407 | Плюс один | С++ | На) | О(1) | Легкий | ЛитКод | |
| 408 | Добавить двоичный файл | С++ | На) | О(1) | Легкий | ЛитКод | |
| 415 | Действительный палиндром | С++ | На) | О(1) | Легкий | ЛитКод | |
| 417 | Действительный номер | С++ | На) | О(1) | Жесткий | ЛитКод | Автоматы |
| 420 | Посчитай и скажи | С++ | О(п * 2^п) | О (2 ^ п) | Легкий | ЛитКод | |
| 422 | Длина последнего слова | С++ | На) | О(1) | Легкий | ЛитКод | |
| 524 | Левая панель | С++ | О (р + п) | О(1) | Легкий | ЛитКод | |
Связанный список
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 16 | Объединить два отсортированных списка | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | |
| 35 | Обратный связанный список | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | |
| 36 | Обратно-связанный список II | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | |
| 96 | Список разделов | С++ | На) | О(1) | Легкий | ЛитКод | |
| 98 | Сортировать список | С++ | О(нлогн) | О(вход) | Середина | ЛитКод, ЭПИ | |
| 99 | Переупорядочить список | С++ | На) | О(1) | Середина | ЛитКод | |
| 102 | Цикл связанного списка | С++ | На) | О(1) | Середина | ЛитКод | |
| 103 | Связанный список, цикл II | С++ | На) | О(1) | Жесткий | ЛитКод | |
| 104 | Объединить k отсортированных списков | С++ | О(п * логк) | О(1) | Середина | ЛитКод | Куча, разделяй и властвуй |
| 105 | Список копирования со случайным указателем | С++ | На) | О(1) | Середина | ЛитКод | |
| 106 | Преобразование отсортированного списка в двоичное дерево поиска | С++ | На) | О(вход) | Середина | ЛитКод, ЭПИ | |
| 112 | Удалить дубликаты из отсортированного списка | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | |
| 113 | Удалить дубликаты из отсортированного списка II | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | |
| 166 | От N-го до последнего узла в списке | С++ | На) | О(1) | Легкий | ЛитКод | |
| 167 | Сумма двух списков | С++ | На) | О(1) | Легкий | ЛитКод | |
| 170 | Поворот списка | С++ | На) | О(1) | Середина | ЛитКод | |
| 173 | Список сортировки вставками | С++ | О(п^2) | О(1) | Легкий | ЛитКод | |
| 174 | Удалить N-й узел из конца списка | С++ | На) | О(1) | Легкий | ЛитКод | |
| 223 | Связанный список палиндромов | С++ | На) | О(1) | Середина | ЛитКод | |
| 372 | Удалить узел в середине односвязного списка | С++ | О(1) | О(1) | Легкий | CTCI | |
| 380 | Пересечение двух связанных списков | С++ | О (м + п) | О(1) | Легкий | ЛитКод | |
| 450 | Обратные узлы в k-группе | С++ | На) | О(1) | Жесткий | ЛитКод | |
| 451 | Поменяйте узлы парами | С++ | На) | О(1) | Легкий | ЛитКод | |
| 452 | Удаление элементов связанного списка | С++ | На) | О(1) | Наивный | ЛитКод | |
| 511 | Поменяйте местами два узла в связанном списке | С++ | На) | О(1) | Середина | | |
Дерево
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 7 | Сериализация двоичного дерева | С++ | На) | Ой) | Середина | | |
| 85 | Вставить узел в двоичное дерево поиска | С++ | Ой) | О(1) | Легкий | | |
| 88 | Низший общий предок | С++ | На) | Ой) | Середина | РПИ | |
| 175 | Инвертировать двоичное дерево | С++ | На) | Ой) | Легкий | ЛитКод | |
| 442 | Реализация Trie | С++ | На) | О(1) | Середина | ЛитКод | Три |
Куча
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 12 | Мин. стек | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | |
| 40 | Реализация очереди двумя стеками | С++ | O(1), амортизированный | На) | Середина | РПИ | |
| 66 | Обход предзаказа двоичного дерева | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | Morris Traversal |
| 67 | Обход по порядку двоичного дерева | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | Morris Traversal |
| 68 | Обход постпорядка двоичного дерева | С++ | На) | О(1) | Легкий | ЛитКод, ЭПИ | Morris Traversal |
| 122 | Самый большой прямоугольник на гистограмме | С++ | На) | На) | Жесткий | ЛитКод, ЭПИ | Восходящий стек |
| 126 | Макс Три | С++ | На) | На) | Жесткий | | Нисходящий стек |
| 367 | Построение дерева выражений | С++ | На) | На) | Жесткий | | |
| 368 | Оценка выражения | С++ | На) | На) | Жесткий | | |
| 369 | Преобразование выражения в польскую запись | С++ | На) | На) | Жесткий | | |
| 370 | Преобразование выражения в обратную польскую запись | С++ | На) | На) | Жесткий | | |
| 421 | Упростить путь | С++ | На) | На) | Середина | ЛитКод | |
| 423 | Допустимые скобки | С++ | На) | На) | Легкий | ЛитКод | |
| 424 | Оцените обратную польскую запись | С++ | На) | На) | Середина | ЛитКод | |
| 473 | Добавить и найти слово | С++ | О(мин(п, час)) | О(мин(п, час) | Середина | ЛитКод | Три |
| 510 | Максимальный прямоугольник | С++ | О(м * п) | На) | Жесткий | ЛитКод | Восходящий стек |
| 528 | Сгладить итератор вложенного списка | С++ | На) | Ой) | Середина | ЛитКод | |
Очередь
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 362 | Максимум скользящего окна | С++ | На) | Хорошо) | Жесткий | РПИ | Деке, Хитрый |
Куча
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 4 | Уродливый номер II | С++ | На) | О(1) | Середина | CTCI | BST, куча |
| 81 | Медиана потока данных | С++ | О(нлогн) | На) | Жесткий | РПИ | BST, куча |
| 130 | Куча | С++ | На) | О(1) | Середина | | |
| 364 | Улавливание дождевой воды II | С++ | O(m * n * (logm + logn)) | О(м * п) | Жесткий | | БФС, Куча, Хитрость |
| 518 | Супер уродливый номер | С++ | О(п * к) | О (п + к) | Середина | ЛитКод | BST, куча |
Хэш-таблицы
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 56 | 2 Сумма | С++ | На) | На) | Середина | ЛитКод | |
| 124 | Самая длинная последовательная последовательность | С++ | На) | На) | Середина | ЛитКод, ЭПИ | |
| 128 | Хэш-функция | С++ | На) | О(1) | Легкий | | |
| 129 | Перефразирование | С++ | На) | На) | Середина | | |
| 138 | Сумма подмассива | С++ | На) | На) | Легкий | | |
| 186 | Максимальное количество очков на линии | С++ | О(п^2) | На) | Середина | ЛитКод | |
| 211 | Перестановка строк | С++ | На) | О(1) | Легкий | | |
| 384 | Самая длинная подстрока без повторяющихся символов | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | |
| 386 | Самая длинная подстрока, содержащая не более K различных символов | С++ | На) | На) | Середина | | |
| 432 | Найдите компонент слабой связности в ориентированном графе | С++ | О(нлогн) | На) | Середина | | Союз Найти |
| 434 | Количество островов II | С++ | Хорошо) | Хорошо) | Жесткий | | Союз Найти |
| 488 | Счастливое число | С++ | Хорошо) | Хорошо) | Легкий | ЛитКод | |
| 547 | Пересечение двух массивов | С++ | О (м + п) | О(мин(м, п)) | Легкий | ЭПИ, ЛитКод | Два указателя, двоичный поиск |
| 548 | Пересечение двух массивов II | С++ | О (м + п) | О(мин(м, п)) | Легкий | ЭПИ, ЛитКод | Два указателя, двоичный поиск |
Структура данных
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 134 | LRU-кэш | С++ | О(1) | Хорошо) | Жесткий | ЛитКод, ЭПИ | Список, Хэш |
Математика
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 2 | Завершающие нули | С++ | О(1) | О(1) | Легкий | ЛитКод | |
| 3 | Количество цифр | С++ | О(1) | О(1) | Середина | CTCI | |
| 114 | Уникальные пути | С++ | О(мин(м, п)) | О(1) | Легкий | LeetCode, CTCI | ДП, Математика |
| 163 | Уникальные деревья двоичного поиска | С++ | На) | О(1) | Середина | CTCI | DP, математика, Catalan Number |
| 180 | Двоичное представление | С++ | О(1) | О(1) | Жесткий | CTCI | |
| 197 | Индекс перестановки | С++ | О(п^2) | О(1) | Легкий | | |
| 198 | Индекс перестановки II | С++ | О(п^2) | На) | Середина | | |
| 394 | Монеты в линии | С++ | О(1) | О(1) | Легкий | | |
| 411 | Код Грея | С++ | О (2 ^ п) | О(1) | Середина | ЛитКод | |
| 413 | Обратное целое число | С++ | О(1) | О(1) | Середина | ЛитКод | |
| 414 | Разделить два целых числа | С++ | О(1) | О(1) | Середина | ЛитКод | |
| 418 | Целое число в римский | С++ | На) | О(1) | Середина | ЛитКод | |
| 419 | Роман в целое число | С++ | На) | О(1) | Середина | ЛитКод | |
| 428 | Пау(х, п) | С++ | О(1) | О(1) | Середина | ЛитКод | |
| 445 | Косинусное сходство | С++ Питон | На) | О(1) | Легкий | | |
| 517 | Уродливый номер | С++ | О(1) | О(1) | Легкий | CTCI, ЛитКод | |
Сортировать
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 5 | K-й самый большой элемент | С++ | О (п) ~ О (п ^ 2) | О(1) | Середина | РПИ | Два указателя, быстрая сортировка |
| 80 | медиана | С++ | На) | О(1) | Легкий | РПИ | |
| 139 | Ближайшая сумма подмассива | С++ | О(нлогн) | На) | Середина | | Сортировать |
| 143 | Сортировка цветов II | С++ | На) | О(1) | Середина | | |
| 148 | Сортировать цвета | С++ | На) | О(1) | Середина | ЛитКод | |
| 156 | Объединить интервалы | С++ | О(нлогн) | О(1) | Легкий | ЛитКод, ЭПИ | |
| 184 | Самое большое число | С++ | О(нлогн) | О(1) | Середина | ЛитКод | |
| 366 | Фибоначчи | С++ | На) | О(1) | Легкий | | |
| 379 | Переупорядочить массив, чтобы построить минимальное число | С++ | О(нлогн) | О(1) | Середина | ЛитКод | |
| 387 | Самая маленькая разница | С++ | O(max(m, n) * log(min(m, n))) | О(1) | Середина | | Два указателя, двоичный поиск |
| 399 | Проблема с гайками и болтами | С++ | О(нлогн) | О(вход) | Середина | | Быстрая сортировка |
| 400 | Максимальный разрыв | С++ Питон | На) | На) | Жесткий | ЛитКод | Ведровая сортировка |
| 463 | Сортировка целых чисел | С++ | О(п^2) | О(1) | Легкий | | Сортировка вставками, сортировка выбором, пузырьковая сортировка |
| 464 | Сортировка целых чисел II | С++ | О(нлогн) | На) | Легкий | | Сортировка слиянием, пирамидальная сортировка, быстрая сортировка |
| 507 | Wiggle Сортировка II | С++ | O(n) в среднем | О(1) | Середина | ЛитКод | Три раздела |
| 508 | Покачивание сортировки | С++ | На) | О(1) | Середина | ЛитКод | |
Рекурсия
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 22 | Сгладить список | С++ | На) | Ой) | Легкий | | |
| 72 | Постройте двоичное дерево из обхода в прямом и обратном порядке | С++ | На) | На) | Середина | ЛитКод, ЭПИ | |
| 73 | Постройте двоичное дерево из предзаказа и обхода в обратном порядке | С++ | На) | На) | Середина | ЛитКод, ЭПИ | |
| 93 | Сбалансированное двоичное дерево | С++ | На) | Ой) | Легкий | ЛитКод | |
| 94 | Максимальная сумма путей двоичного дерева | С++ | На) | Ой) | Середина | ЛитКод | |
| 95 | Проверка двоичного дерева поиска | С++ | На) | Ой) | Середина | ЛитКод | |
| 97 | Максимальная глубина двоичного дерева | С++ | На) | Ой) | Легкий | ЛитКод | |
| 131 | Схема здания | С++ Питон | О(нлогн) | На) | Жесткий | РПИ | Сортировать, лучшее время |
| 140 | Быстрая мощность | С++ | О(вход) | О(1) | Середина | | |
| 155 | Минимальная глубина двоичного дерева | С++ | На) | Ой) | Легкий | ЛитКод | |
| 164 | Уникальные двоичные деревья поиска II | С++ | O(n * 4^n / n^(3/2)) | На) | Середина | ЛитКод | |
| 177 | Преобразование отсортированного массива в двоичное дерево поиска минимальной высоты | С++ | На) | О(вход) | Легкий | ЛитКод | |
| 201 | Построение дерева сегментов | С++ | На) | Ой) | Середина | | Дерево сегментов, BST |
| 202 | Запрос дерева сегментов | С++ | Ой) | Ой) | Середина | | Дерево сегментов, BST |
| 203 | Изменение дерева сегментов | С++ | Ой) | Ой) | Середина | | Дерево сегментов, BST |
| 205 | Минимальное количество интервалов | С++ | построить дерево: O(n) , запрос: (h) | Ой) | Жесткий | | Дерево сегментов, BST |
| 206 | Интервальная сумма | С++ | дерево построения: O(n) , запрос: O(logn) | На) | Жесткий | | Дерево сегментов, BIT |
| 207 | Интервальная сумма II | С++ | построить дерево: O(n) , запрос: O(logn) , изменить: O(logn) | На) | Жесткий | | Дерево сегментов, BIT |
| 245 | Поддерево | С++ | О(м * п) | О(1) | Легкий | | Morris Traversal |
| 247 | Запрос дерева сегментов II | С++ | Ой) | Ой) | Жесткий | | Дерево сегментов, BST |
| 248 | Подсчет меньшего числа | С++ | дерево построения: O(n) , запрос: O(logn) | Ой) | Середина | | Дерево сегментов, BST |
| 371 | Печать чисел с помощью рекурсии | С++ | На) | На) | Середина | | |
| 375 | Клонировать двоичное дерево | С++ | На) | Ой) | Легкий | | |
| 378 | Преобразование двоичного дерева поиска в двусвязный список | С++ | На) | Ой) | Середина | | |
| 439 | Построение дерева сегментов II | С++ | На) | Ой) | Середина | | Дерево сегментов, BST |
| 453 | Свести двоичное дерево в связанный список | С++ | На) | Ой) | Легкий | ЛитКод | |
| 469 | Идентичное двоичное дерево | С++ | На) | Ой) | Легкий | | |
| 532 | Обратные пары | С++ | О(нлогн) | На) | Середина | вариант счета меньшего числа перед самим собой | BIT, сортировка слиянием |
| 535 | Грабитель дома III | С++ | На) | Ой) | Середина | ЛитКод | |
Бинарный поиск
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 14 | Первая позиция цели | С++ | О(вход) | О(1) | Легкий | | |
| 28 | Поиск 2D-матрицы | С++ | О(логм + логн) | О(1) | Легкий | ЛитКод | |
| 60 | Поиск позиции вставки | С++ | О(вход) | О(1) | Легкий | ЛитКод | |
| 61 | Поиск диапазона | С++ | О(вход) | О(1) | Середина | ЛитКод | |
| 62 | Поиск в повернутом отсортированном массиве | С++ | О(вход) | О(1) | Середина | ЛитКод | |
| 63 | Поиск в повернутом отсортированном массиве II | С++ | О(вход) | О(1) | Середина | ЛитКод | |
| 65 | Медиана двух отсортированных массивов | С++ | O(log(min(m, n))) | О(1) | Жесткий | ЛитКод, ЭПИ | Сложный |
| 74 | Первая плохая версия | С++ | О(вход) | О(1) | Середина | | |
| 75 | Найти пиковый элемент | С++ | О(вход) | О(1) | Середина | ЛитКод | |
| 76 | Самая длинная возрастающая подпоследовательность | С++ | О(нлогн) | На) | Середина | CTCI | |
| 141 | Квадрат(x) | С++ | О(вход) | О(1) | Легкий | ЛитКод | |
| 159 | Найти минимум в повернутом отсортированном массиве | С++ | О(вход) | О(1) | Середина | ЛитКод | |
| 160 | Найти минимум в повернутом отсортированном массиве II | С++ | О(вход) | О(1) | Середина | ЛитКод | |
| 183 | Резьба по дереву | С++ | О (nlogL) | О(1) | Середина | | |
| 390 | Найти пиковый элемент II | С++ Java Питон | О (м + п) | О(1) | Жесткий | | |
| 437 | Копирование книг | С++ | О (нлогп) | О(1) | Жесткий | УВА 714 | |
Поиск в ширину
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 69 | Обход порядка на уровне двоичного дерева | С++ | На) | На) | Середина | ЛитКод | БФС |
| 70 | Обход порядка на уровне двоичного дерева II | С++ | На) | На) | Середина | ЛитКод | БФС |
| 71 | Обход порядка зигзагообразного уровня двоичного дерева | С++ | На) | На) | Середина | ЛитКод | БФС |
| 120 | Словесная лестница | С++ | О(п * д) | О (д) | Середина | ЛитКод | БФС |
| 121 | Словесная лестница II | С++ | О(п * д) | О (д) | Жесткий | ЛитКод | БФС, Back Trace |
| 127 | Топологическая сортировка | С++ | О(|В|+|Е|) | О(|Е|) | Середина | | ДФС, БФС |
| 137 | Клонировать график | С++ | О(|В|+|Е|) | О(|В|) | Середина | | БФС |
| 176 | Маршрут между двумя узлами в графе | С++ | На) | На) | Середина | | ДФС, БФС |
| 178 | Граф допустимого дерева | С++ | О(|V| + |E|) | О(|V| + |E|) | Середина | ЛитКод | |
| 431 | Найдите связный компонент в неориентированном графе | С++ | На) | На) | Середина | | БФС |
| 477 | Окружающие регионы | С++ | О(м * п) | О (м + п) | Середина | ЛитКод | |
Поиск в глубину
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 90 | К Сумма II | С++ | О(к * С(п, к)) | Хорошо) | Середина | | |
| 376 | Сумма путей двоичного дерева | С++ | На) | Ой) | Легкий | ЛитКод | |
| 433 | Количество островов | С++ | О(м * п) | О(м * п) | Легкий | ЛитКод | ДФС |
| 480 | Пути двоичного дерева | С++ | О(п * ч) | Ой) | Легкий | ЛитКод | |
Возврат
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 15 | Перестановки | С++ | О(н*н!) | На) | Середина | ЛитКод, ЭПИ | |
| 16 | Перестановки II | С++ | О(н*н!) | На) | Середина | ЛитКод, ЭПИ | |
| 17 | Подмножества | С++ | О(п * 2^п) | О(1) | Середина | ЛитКод | |
| 18 | Подмножества II | С++ | О(п * 2^п) | О(1) | Середина | ЛитКод | |
| 33 | Н-Куинс | С++ | О(н*н!) | На) | Середина | ЛитКод, ЭПИ | |
| 34 | Н-Куинс II | С++ | О(н*н!) | На) | Середина | ЛитКод, ЭПИ | |
| 123 | Поиск слов | С++ | О(м * п * л) | О (л) | Середина | ЛитКод | |
| 132 | Поиск слов II | С++ | О(м * п * л) | О (л) | Жесткий | | Три, ДФС |
| 135 | Сумма комбинации | С++ | О (к * п^к) | Хорошо) | Середина | ЛитКод | ДФС |
| 136 | Палиндромное разбиение | С++ | О (2 ^ п) | На) | Легкий | ЛитКод, ЭПИ | |
| 152 | Комбинации | С++ | О (к * п^к) | Хорошо) | Середина | ЛитКод, ЭПИ | |
| 153 | Комбинированная сумма II | С++ | О(к * С(п, к)) | Хорошо) | Середина | ЛитКод | ДФС |
| 425 | Буквенные комбинации номера телефона | С++ | О(п * 4^п) | На) | Середина | ЛитКод | |
| 426 | Восстановить IP-адреса | С++ | О(1) | О(1) | Середина | ЛитКод | |
| 427 | Создать круглые скобки | С++ | О(4^n / n^(3/2)) | На) | Середина | ЛитКод | |
Двоичные деревья поиска
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 11 | Диапазон поиска в двоичном дереве поиска | С++ | На) | Ой) | Середина | РПИ | |
| 86 | Итератор дерева двоичного поиска | С++ | О(1) | Ой) | Жесткий | ЛитКод | |
| 87 | Удалить узел в дереве двоичного поиска | С++ | Ой) | Ой) | Жесткий | | |
| 249 | Счет меньшего числа перед самим собой | С++ | О(нлогн) | На) | Жесткий | | BST, BIT, разделяй и властвуй, сортировка слиянием |
| 360 | Медиана скользящего окна | С++ | О(нлогв) | О (ш) | Жесткий | | BST, Хитрый |
| 391 | Количество самолетов в небе | С++ | О(нлогн) | На) | Легкий | | BST, куча |
| 401 | K-е наименьшее число в отсортированной матрице | С++ | O(klog(min(m, n, k))) | О(мин(м, п, к)) | Середина | | BST, куча |
Динамическое программирование
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 20 | Сумма кубиков | С++ | О(п^2) | На) | Жесткий | | |
| 29 | Чередование строки | С++ | О(м * п) | О(мин(м, п)) | Середина | РПИ | |
| 43 | Максимальный подмассив III | С++ | О(к * п) | О(к * п) | Жесткий | | |
| 77 | Самая длинная общая подпоследовательность | С++ | О(м * п) | О(мин(м, п)) | Середина | | |
| 79 | Самая длинная общая подстрока | С++ | О(м * п) | О(мин(м, п)) | Середина | | |
| 89 | К Сумма | С++ | О(к * п * т) | О(п * т) | Жесткий | | |
| 91 | Минимальная стоимость корректировки | С++ | О(к * п * т) | Хорошо) | Середина | | |
| 92 | Рюкзак | С++ | О(м * п) | О (м) | Легкий | | |
| 107 | Разрыв слов | С++ | О(п * л^2) | На) | Середина | ЛитКод, ЭПИ | |
| 108 | Палиндромное разбиение II | С++ | О(п^2) | На) | Середина | ЛитКод, ЭПИ | |
| 109 | Треугольник | С++ | На) | На) | Легкий | ЛитКод, ЭПИ | |
| 110 | Минимальная сумма пути | С++ | О(м * п) | О(мин(м, п)) | Легкий | ЛитКод, ЭПИ | |
| 111 | Подъем по лестнице | С++ | О(вход) | О(1) | Легкий | ЛитКод | |
| 115 | Уникальные пути II | С++ | О(м * п) | О(мин(м, п)) | Легкий | LeetCode, CTCI | ДП, Математика |
| 118 | Различные подпоследовательности | С++ | О(м * п) | О (м) | Середина | ЛитКод | ДП |
| 119 | Изменить расстояние | С++ | О(м * п) | О(мин(м, п)) | Середина | LeetCode, CTCI | ДП |
| 125 | Рюкзак II | С++ | О(м * п) | О (м) | Середина | | |
| 149 | Лучшее время для покупки и продажи акций | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | |
| 150 | Лучшее время для покупки и продажи акций II | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | |
| 151 | Лучшее время для покупки и продажи акций III | С++ | На) | О(1) | Середина | ЛитКод, ЭПИ | |
| 154 | Сопоставление регулярных выражений | С++ | О(м * п) | О (м) | Жесткий | ЛитКод | ДП, Рекурсия |
| 168 | Лопнувшие воздушные шары | С++ | О(п^3) | О(п^2) | Середина | ЛитКод | |
| 191 | Максимальный подмассив продуктов | С++ | На) | О(1) | Середина | ЛитКод | |
| 392 | грабитель дома | С++ | На) | О(1) | Середина | ЛитКод | |
| 393 | Лучшее время для покупки и продажи акций IV | С++ | О(к * п) | Хорошо) | Жесткий | ЛитКод, ЭПИ | |
| 395 | Монеты в строке II | С++ | На) | О(1) | Середина | | |
| 396 | Монеты в строке III | С++ | О(п^2) | На) | Жесткий | | |
| 397 | Самая длинная возрастающая непрерывная подпоследовательность | С++ | На) | О(1) | Легкий | | |
| 398 | Самая длинная возрастающая непрерывная подпоследовательность II | С++ | О(м * п) | О(м * п) | Жесткий | | |
| 403 | Непрерывная сумма подмассивов II | С++ | На) | О(1) | Середина | РПИ | |
| 430 | Скрэмбл-строка | С++ | О(п^4) | О(п^3) | Жесткий | ЛитКод | |
| 435 | Проблема с почтовым отделением | С++ | О (к * п^2) | На) | Жесткий | ПКУ 1160 | |
| 436 | Максимальная площадь | С++ | О(м * п) | На) | Середина | ЛитКод | |
| 512 | Способы декодирования | С++ | На) | О(1) | Середина | ЛитКод | |
| 513 | Идеальные квадраты | С++ | O(n * sqrt(n)) | На) | Середина | ЛитКод | |
| 514 | Краска Забор | С++ | На) | О(1) | Легкий | ЛитКод | |
| 515 | Краска Дом | С++ | На) | О(1) | Середина | ЛитКод | |
| 516 | Краска Дом II | С++ | О(п * к) | Хорошо) | Жесткий | ЛитКод | |
| 534 | Грабитель дома II | С++ | На) | О(1) | Середина | ЛитКод | |
| 564 | Рюкзак VI | С++ | О(п * т) | О(т) | Середина | | |
Жадный
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 41 | Максимальный подмассив | С++ | На) | О(1) | Легкий | ЛитКод | |
| 42 | Максимальный подмассив II | С++ | На) | На) | Середина | | |
| 44 | Минимальный подмассив | С++ | На) | О(1) | Легкий | | |
| 45 | Максимальная разница в подмассивах | С++ | На) | На) | Середина | | |
| 116 | Прыжок игры | С++ | На) | О(1) | Середина | ЛитКод | |
| 117 | Игра в прыжок II | С++ | На) | О(1) | Середина | ЛитКод | |
| 182 | Удалить цифры | С++ | На) | На) | Середина | | |
| 187 | АЗС | С++ | На) | О(1) | Легкий | ЛитКод | |
| 192 | Соответствие подстановочным знакам | С++ | О (м + п) | О(1) | Жесткий | ЛитКод | Жадность, ДП, Рекурсия |
| 402 | Непрерывная сумма подмассивов | С++ | На) | О(1) | Середина | РПИ | |
| 412 | Конфеты | С++ | На) | На) | Жесткий | ЛитКод | Жадный |
| 552 | Создать максимальное количество | С++ | O(k * (m + n + k)) ~ O(k * (m + n + k^2)) | О (м + п + к^2) | Жесткий | ЛитКод | Жадный, ДП |
ОО Дизайн
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 204 | Синглтон | С++ | О(1) | О(1) | Легкий | | |
| 208 | Перегрузка оператора присваивания (только C++) | С++ | На) | О(1) | Середина | | |
| 496 | Фабрика игрушек | С++ | О(1) | О(1) | Легкий | | |
| 497 | Фабрика форм | С++ | О(1) | О(1) | Легкий | | |
| 498 | Парковка | С++ | О(п * м * к) | О(п * м * к) | Жесткий | CTCI | ОО-дизайн, идиома Pimpl, умный указатель |
Проектирование системы
| # | Заголовок | Решение | Время | Космос | Сложность | Ярлык | Примечание |
|---|
| 501 | Мини Твиттер | С++ | О(клогу) | О (т + е) | Середина | | |