английский | 简体中文
Алгоритмы и структуры данных
Это сборник алгоритмов, структур данных и вопросов для интервью с решениями. В этом репозитории содержатся мои решения распространенных алгоритмических проблем и реализации структур данных на Java. Я создал этот репозиторий, чтобы узнать об алгоритмах. Я постоянно добавляю решения.
На данный момент предоставлены алгоритмы, структуры данных и более 300 задач и решений .
Вопросы
Вот вопросы, разделенные по уровням сложности:
- Простые вопросы и ответы
- Средний Вопросы и Ответы
- Сложные вопросы и ответы
Проблемы:
Массивы
- Поворот массива
- Содержит дубликат
- Найти пиковый элемент
- Максимальный подмассив
- K-й самый большой элемент в массиве
- Найти все дубликаты в массиве
- Самая длинная возрастающая подпоследовательность
- Поворот изображения, матрица
- Перемешать массив
- Найти минимум во вращающемся массиве
- Поиск в повернутом массиве
Связанный список
- Реализация односвязного списка
- Реализация двусвязного списка
- Удалить узел в связанном списке
- Связанный список палиндромов
- Обратный связанный список
- Пересечение двух связанных списков
- Цикл связанного списка
- Удалить N-й узел из конца списка
- Список сортировки слиянием
- Цикл поиска связанных списков
- Объединить k отсортированных списков
И многие другие проблемы со связанным списком
Двоичное дерево
- Обход порядка на уровне двоичного дерева
- Сумма левых листьев
- Инвертировать двоичное дерево
- Итератор дерева двоичного поиска
- Обход постпорядка двоичного дерева
- Обход предзаказа двоичного дерева
- Свести двоичное дерево в связанный список
- Симметричное дерево
- Обход по порядку двоичного дерева
- То же дерево
- Максимальная глубина двоичного дерева
- Сбалансированное двоичное дерево
- Минимальная глубина двоичного дерева
- Отсортированный список для сбалансированного двоичного дерева поиска
- Проверка двоичного дерева поиска
- Отсортированный список в сбалансированный BST
- K-й наименьший элемент в BST
- Обход порядка зигзагообразного уровня двоичного дерева
- Удалить узел в BST
- Низший общий предок BST
- Двоичное дерево, вид слева
- Двоичное дерево, вид справа
- Режим в BST
- Сумма наиболее часто встречающихся поддеревьев
- Найдите самый большой элемент в каждой строке
- Сериализация и десериализация BT
И многие другие проблемы с деревьями
Математика
- Целочисленный разрыв
- Обратные биты
- Номер палиндрома
- Math.pow
- Проблема с кувшином и водой
- Решето Эратосфена
- Простота Ферма
- Оцените обратную польскую запись
Стек и очередь
- Мин. стек
- Мин очередь
- Реализация стека с использованием очереди
- Реализация очереди с использованием стека
- Сортировать стек
Динамическое программирование
- Числа Фибоначчи
- Разрыв слов
- Сумма подмножества
- 0/1 Проблема с рюкзаком
- Кратчайший палиндром (КМП)
- Минимальная квадратичная сумма
- Преобразование максимального веса строки
- Изменение монеты
Разное
- Союз Найти
- Перестановки
- Подмножества
Алгоритмы
Сортировка и поиск
- Пузырьковая сортировка
- Сортировка вставками
- Сортировка выбором
- Счетная сортировка
- Бинарный поиск, нижние и верхние границы
- Сортировка слиянием
- Быстрая сортировка
Графики
- Поиск в ширину (BFS)
- Поиск в глубину (DFS)
- Минимальное остовное дерево Прима (MST)
- Минимальное остовное дерево Крускала (MST)
- Топологическая сортировка
- Кратчайший путь
- Кратчайший путь Беллмана-Форда
- A* Эвристический поиск пути
- Является ли граф двудольным?
- Подключен ли граф
- Обнаружение цикла
- Обнаружение моста ненаправленного графа
Нить
- Рабин Карп Поиск подпоследовательности
- Записка о выкупе
- Обратная строка
- Самый длинный общий префикс
- Анаграмма
- Игла и стог сена
- Разрыв слов
- Мета-строки
Структура данных:
Деревья
- Двоичное дерево поиска (рекурсивное)
- Двоичное дерево поиска (итеративное)
- Дерево АВЛ
- Trie (дерево префиксов)
- Дерево хешированного массива
- LRU-кэш
Способствовать
Вы нашли ошибку? Есть ли способ сделать это лучше? Пожалуйста, не стесняйтесь сделать запрос на это. :)