Проблемы со структурой данных и алгоритмами в C++/Java/Python
Множество
- Найти пару с заданной суммой в массиве
- Проверить, существует ли подмассив с суммой 0
- Вывести все подмассивы с суммой 0
- Сортировка бинарного массива за линейное время
- Найти повторяющийся элемент в массиве с ограниченным диапазоном
- Найти подмассив максимальной длины по заданной сумме
- Найти подмассив максимальной длины, имеющий равное количество нулей и единиц
- Отсортировать массив, содержащий 0, 1 и 2 (задача о голландском национальном флаге)
- На месте объединить два отсортированных массива
- Объединить два массива, удовлетворяя заданным ограничениям
- Найти индекс 0 для замены, чтобы получить последовательность непрерывных единиц максимальной длины
- Найти максимальное произведение двух целых чисел в массиве
- Перетасовка заданного массива элементов (перетасовка Фишера–Йейтса)
- Переставить массив с чередующимися старшими и младшими элементами
- Найти индекс равновесия массива
- Найти наибольший подмассив, образованный последовательными целыми числами
- Найти мажоритарный элемент в массиве (алгоритм голосования Бойера–Мура)
- Переместить все нули, присутствующие в массиве, в конец
- Заменить каждый элемент массива произведением любого другого элемента без использования оператора /
- Найти самый длинный битонический подмассив в массиве
- Найти максимальную разницу между двумя элементами массива, удовлетворяя заданным ограничениям
- Задача на максимальный подмассив (алгоритм Кадане)
- Вывести непрерывный подмассив с максимальной суммой
- Циклический подмассив максимальной суммы
- Найти все различные комбинации заданной длины
- Найти все различные комбинации заданной длины с допустимым повторением
- Найти максимальную последовательность непрерывных единиц, образованную заменой не более чем k нулей единицами
- Найти подмассив минимальной суммы заданного размера k
- Найти подмассив с заданной суммой в заданном массиве целых чисел
- Найти длину наименьшего подмассива, сумма элементов которого больше заданного числа
- Найти наибольшее возможное число из множества заданных чисел
- Найти наименьшее окно в сортировке массива, при котором будет отсортирован весь массив
- Найти путь максимальной суммы, включающий элементы заданных массивов
- Максимальная прибыль, полученная при покупке и продаже акций любое количество раз
- Улавливание дождевой воды в заданном наборе баров
- Самая длинная возрастающая последовательность
- Задача на самую длинную убывающую последовательность
- Найти максимальный подмассив товаров в заданном массиве
- Найти максимальную сумму подпоследовательности без соседних элементов
- Найти минимально необходимое количество платформ на станции, чтобы избежать задержки прибытия любого поезда
- Декодировать массив, построенный из другого массива
- Сортировка массива одним свопом
- Найти триплет с заданной суммой в массиве
- Длина самой длинной непрерывной последовательности с одинаковой суммой в заданных двоичных массивах
- Переупорядочить массив таким образом, чтобы A[A[i]] был равен i для каждого элемента A[i]
- Обратить каждые m последовательных элементов данного подмассива
- Задача о максимальном подмножестве продуктов
- Найти в массиве пары с заданной разностью k
- Найти пары с заданной разностью k в массиве | Решение с постоянным пространством
- Задача на 4 суммы | Четверки с заданной суммой
- Выведите все четверки с заданной суммой | расширенная задача о 4 суммах
- Найти лишний элемент в массиве за один проход
- Найти два нечетных элемента в массиве без использования лишнего пробела
- Алгоритм быстрого выбора
- Выведите все триплеты, образующие арифметическую прогрессию
- Выведите все триплеты, образующие геометрическую прогрессию
- Выведите все комбинации чисел от 1 до n, сумма которых равна n
- Заменить каждый элемент массива соответствующим ему рангом в массиве
- Вывести все триплеты в массиве, сумма которых меньше или равна заданному числу
- Группировать элементы массива по их первому вхождению
- Найти минимальную разницу между индексами двух заданных элементов, присутствующих в массиве
- Найти максимальную абсолютную разность между суммой двух непересекающихся подмассивов
- Найти все симметричные пары в массиве пар
- Разбить массив на два подмассива с одинаковой суммой
- Найти количество различных элементов в каждом подмассиве размера k
- Найти два числа с максимальной суммой, образованной цифрами массива
- Вывести все подмассивы массива, имеющие различные элементы
- Найди тройку с максимальным произведением в массиве
- Найти способы вычисления цели из элементов заданного массива
- Найти минимальный индекс повторяющегося элемента в массиве
- Сгенерировать случайный ввод из массива в соответствии с заданными вероятностями
- Найти пару в массиве с минимальной абсолютной суммой
- Найти индекс максимального встречающегося элемента с равной вероятностью
- Проверить, образован ли массив последовательными целыми числами
- Найти в массиве две непересекающиеся пары, имеющие одинаковую сумму
- Найти минимальное произведение среди всех комбинаций триплетов в массиве
- Заменить каждый элемент массива наименьшим большим элементом справа от него
- Найти все нечетные элементы в массиве с ограниченным диапазоном элементов
- Добавить элементы двух массивов в новый массив
- Подсчитайте различные абсолютные значения в отсортированном массиве
- Выведите все комбинации натуральных чисел в порядке возрастания, которые в сумме дают заданное число
- Найти все различные комбинации заданной длины — Часть 2
- Найти подмассивы с заданной суммой в массиве
- Найти количество превосходящих элементов для каждого элемента массива
- Найти последовательность непрерывных элементов максимальной длины (используя скользящее окно)
- Найти последовательность непрерывных единиц максимальной длины
- Рассчитать частоту всех элементов, присутствующих в массиве заданного диапазона
- Перестройте массив так, чтобы он содержал положительные и отрицательные числа в чередующихся позициях
- Найти отсортированную тройку в заданном массиве
- Перемешать массив в соответствии с заданным порядком элементов
- Найти индекс, который делит массив на два непустых подмассива равной суммы
- Подсчитать количество строго возрастающих подмассивов в массиве
- Найти минимальный диапазон, содержащий хотя бы один элемент из каждого из заданных массивов
- Найти самую длинную подпоследовательность, состоящую из последовательных целых чисел
- Найти дубликаты в заданном диапазоне k в массиве
- Задача на самый длинный чередующийся подмассив
- Найти в массиве все элементы, которые больше, чем все элементы справа от них
- Найти пропущенное число в массиве без использования лишнего пробела
- Разница между подмассивом, подпоследовательностью и подмножеством
- Объединение перекрывающихся интервалов
- Проблема выбора деятельности
- Задача выбора деятельности с использованием динамического программирования
- Проблема последовательности работ со сроками
- Введение в приоритетные очереди с использованием двоичных куч
- Реализация минимальной и максимальной кучи на C++
- Реализация минимальной и максимальной кучи в Java
- Сортировка кучей (реализация вне места и на месте в C++ и C)
- Проверить, представляет ли данный массив минимальную кучу или нет
- Преобразовать максимальную кучу в минимальную кучу за линейное время
- Найти K-й самый большой элемент в массиве
- Сортировка K-сортированного массива
- Объединить M отсортированных списков переменной длины
- Найти K-й наименьший элемент в массиве
- Найти наименьший диапазон, содержащий хотя бы один элемент из каждого из заданных списков
- Объединить M отсортированных списков, каждый из которых содержит N элементов
- Пользовательская сортировка | Сортировать элементы по их частоте и индексу
- Пользовательская сортировка | Отсортировать элементы массива по порядку элементов, заданному вторым массивом
- Счетчик инверсии массива
- Разделение положительных и отрицательных целых чисел за линейное время
- Бинарный поиск
- Тернарный поиск против бинарного поиска
- Интерполяционный поиск
- Экспоненциальный поиск
- Найти число оборотов в циклически отсортированном массиве
- Поиск элемента в круговом отсортированном массиве
- Найти первое или последнее вхождение заданного числа в отсортированном массиве
- Подсчет вхождений числа в отсортированном массиве с дубликатами
- Найти наименьший недостающий элемент в отсортированном массиве
- Найти пол и потолок числа в отсортированном массиве
- Поиск в почти отсортированном массиве за время O(log(n))
- Найти количество единиц в отсортированном двоичном массиве
- Найти пиковый элемент в массиве
- Максимальный подмассив суммы с помощью Divide & Conquer
- Найти минимальный и максимальный элемент в массиве, используя минимальные сравнения
- Матричное умножение цепочек
- 0–1 задача о рюкзаке
- Максимизировать значение выражения
- Проблема раздела
- Задача суммы подмножества
- Задача о разделе минимальной суммы
- Розовая резка
- Задача на размен монет (неограниченный запас монет)
- Задача на размен монет (Общее количество способов получить номинал монет)
- Самая длинная чередующаяся подпоследовательность
- Сочетания слов, образованные заменой данных цифр соответствующими алфавитами
- Расшифруйте заданную последовательность, чтобы построить минимальное число без повторяющихся цифр
- Все комбинации элементов, удовлетворяющие заданным ограничениям
- Найти пропущенный член в последовательности за лог(n) раз
- Распечатать все различные подмножества данного набора
- Найти пол и потолок числа в отсортированном массиве (Рекурсивное решение)
- Установить оба элемента бинарного массива равными 0 в одной строке
- Проблема K-раздела | Печать всех разделов
- Проблема 3-х разделов
- Проблема с тремя разделами расширена | Распечатать все разделы
- Найти два повторяющихся элемента в массиве с ограниченным диапазоном (используя XOR)
- Найти пропущенное число и повторяющиеся элементы в массиве
- Найти минимальный и максимальный элемент в массиве, выполнив минимальное сравнение
- Найти частоту каждого элемента в отсортированном массиве, содержащем дубликаты
- Разделение положительных и отрицательных целых чисел с помощью сортировки слиянием
- Задача взвешенного интервального планирования
- Задача укладки коробок
- Взвешенное интервальное планирование — решение для динамического программирования
- Сортировка вставками | Итеративный и рекурсивный
- Сортировка выбором | Итеративный и рекурсивный
- Пузырьковая сортировка | Итеративный и рекурсивный
- "Сортировка слиянием"
- Алгоритм итеративной сортировки слиянием (сортировка слиянием снизу вверх)
- Быстрая сортировка
- Итеративное внедрение быстрой сортировки
- Гибридная быстрая сортировка
- Быстрая сортировка с использованием алгоритма голландского национального флага
- Быстрая сортировка по схеме разбиения Хоара
- Внешняя сортировка слиянием
Возвращение
- Выведите все возможные решения задачи N ферзей
- Выведите все возможные ходы коня на шахматной доске
- Найди кратчайший путь в лабиринте
- Найти максимально длинный маршрут в матрице
- Найти путь от источника к месту назначения в матрице, удовлетворяющей заданным ограничениям
- Найти общее количество уникальных путей в лабиринте от источника к месту назначения
- Вывести все гамильтоновы пути, присутствующие в графе
- Вывести все k-раскрашиваемые конфигурации графа (Раскраска вершин графа)
- Найти все перестановки заданной строки
- Все комбинации элементов, удовлетворяющие заданным ограничениям
- Найти все бинарные строки, которые можно составить из заданного шаблона подстановочных знаков
- Проблема K-раздела | Печать всех разделов
- Магнитный пазл
- Найти способы вычисления цели из элементов заданного массива
- Найти минимально возможное число, сделав не более K свопов
- Определить, совпадает ли шаблон со строкой или нет
- Создать список возможных слов из матрицы символов
- Найти путь между заданными вершинами в ориентированном графе
- Найти все возможные топологические порядки DAG
Битовые манипуляции
- Бит Хаки — Часть 1 (Базовая)
- Bit Hacks — Часть 2 (Игра с k’м битом)
- Bit Hacks — Part 3 (Игра с крайним правым установленным битом числа)
- Bit Hacks — Часть 4 (Игра с буквами английского алфавита)
- Бит-хаки — Часть 5 (Найти абсолютное значение целого числа без ветвления)
- Бит Хаки — Часть 6 (Случайные задачи)
- Алгоритм Брайана Кернигана для подсчета заданных битов в целом числе
- Вычисление четности числа с помощью интерполяционной таблицы
- Подсчет множества битов с помощью таблицы поиска
- Найти минимум или максимум двух целых чисел без использования ветвления
- Умножение 16-битных целых чисел с помощью 8-битного множителя
- Округлить до наибольшей степени числа 2
- Округлить до предыдущей степени числа 2
- Поменять местами отдельные биты в заданной позиции в целом числе
- Проверить, является ли данное число степенью 4 или нет
- Обратные биты данного целого числа
- Найти лишний элемент в массиве за один проход
- Найти два нечетных элемента в массиве без использования лишнего пробела
- Поменять местами два бита в заданной позиции в целом числе
- Добавить двоичное представление двух целых чисел
- Поменять местами соседние биты числа
- Распечатать все различные подмножества данного набора
- Выполнить деление двух чисел без использования оператора деления (/)
- Проверить, установлены ли соседние биты в двоичном представлении данного числа
- Условно инвертировать значение без ветвления
- Найти два повторяющихся элемента в массиве с ограниченным диапазоном (используя XOR)
- Найти пропущенное число и повторяющиеся элементы в массиве
- Проверить, является ли данное число степенью 8 или нет
- Круговой сдвиг по двоичному представлению целого числа на k позиций
- Решить заданный набор задач без использования операторов умножения и деления
- Обратные биты целого числа с помощью таблицы поиска
- Генерировать двоичные числа от 1 до N
- Эффективно реализовать силовую функцию | Рекурсивный и итеративный
- Найти квадрат числа без использования оператора умножения и деления
- Создать набор мощности заданного набора
- Кодирование Хаффмана
- Найти все нечетные элементы в массиве с ограниченным диапазоном элементов
- Найти пропущенное число в массиве без использования лишнего пробела
Бинарное дерево
- Проверить, идентичны ли два заданных бинарных дерева | Итеративный и рекурсивный
- Вычислить высоту бинарного дерева | Итеративный и рекурсивный
- Удалить заданное бинарное дерево | Итеративный и рекурсивный
- Обход дерева по порядку | Итеративный и рекурсивный
- Предзаказ обхода дерева | Итеративный и рекурсивный
- Обход дерева пост-заказов | Итеративный и рекурсивный
- Уровневый обход бинарного дерева
- Спиральный обход бинарного дерева
- Обход двоичного дерева в обратном порядке
- Вывести все узлы заданного бинарного дерева в определенном порядке
- Печатать левое представление бинарного дерева
- Печать нижнего вида бинарного дерева
- Печать вида сверху бинарного дерева
- Найти следующий узел на том же уровне для данного узла в бинарном дереве
- Проверить, является ли заданное бинарное дерево полным бинарным деревом или нет
- Определить, являются ли данные два узла двоюродными братьями друг другу
- Вывести кузенов данного узла в бинарном дереве
- Преобразование заданного бинарного дерева в его дерево сумм на месте
- Проверить, является ли заданное бинарное дерево деревом сумм или нет
- Сочетания слов, образованные заменой данных цифр соответствующими алфавитами
- Определить, является ли данное бинарное дерево поддеревом другого бинарного дерева или нет
- Найти диаметр бинарного дерева
- Проверить, имеет ли заданное бинарное дерево симметричную структуру или нет
- Преобразовать бинарное дерево в его зеркало
- Проверить, можно ли преобразовать бинарное дерево в другое, выполнив любое действие no. перестановок левого и правого дочерних элементов
- Найти младшего общего предка (LCA) двух узлов в бинарном дереве
- Вывести все пути от корневых до листовых узлов бинарного дерева
- Найти предков данного узла в бинарном дереве
- Найти расстояние между заданными парами узлов в бинарном дереве
- Найти вертикальную сумму в заданном двоичном дереве
- Печать узлов заданного бинарного дерева (вертикальный обход) в вертикальном порядке
- Найти диагональную сумму заданного бинарного дерева
- Печать диагонального обхода бинарного дерева
- Вывести угловые узлы каждого уровня бинарного дерева
- Преобразование на месте заданного двоичного дерева в двусвязный список
- Опустить узлы, содержащие ноль, в низ бинарного дерева
- Преобразовать заданное бинарное дерево в полное дерево, удалив половину узлов
- Обрезать заданное бинарное дерево, чтобы удалить узлы, лежащие на пути, сумма которого меньше K
- Найти максимальную сумму корневых путей в бинарном дереве
- Проверить, сбалансировано ли заданное бинарное дерево по высоте или нет
- Преобразовать обычное двоичное дерево в левое дочернее правое бинарное дерево
- Определить, является ли заданное бинарное дерево BST или нет
- Преобразуйте двоичное дерево в BST, сохранив его исходную структуру
- Инвертировать заданное бинарное дерево | Рекурсивное и итеративное решение
- Правая печать бинарного дерева
- Вывести все пути от листа к корневому узлу в заданном бинарном дереве
- Итеративно печатать путь от листа к корню для каждого конечного узла в бинарном дереве
- Найти максимальную ширину заданного бинарного дерева
- Построить бинарное дерево из заданного родительского массива
- Найти все узлы на заданном расстоянии от листовых узлов в бинарном дереве
- Подсчитать все поддеревья с одинаковым значением узлов в бинарном дереве
- Найти максимальную разницу между узлом и его потомками в бинарном дереве
- Построить бинарное дерево из матрицы предков
- Вычислить высоту бинарного дерева с листовыми узлами, образующими круговой двусвязный список
- Найти путь максимальной суммы между двумя листьями в бинарном дереве
- Исправить бинарное дерево, которое находится всего в одном обмене от превращения в BST
- Построить бинарное дерево из прямого и прямого обхода
- Построить бинарное дерево из обходов в прямом и обратном порядке
- Построить бинарное дерево из упорядоченной и ровной последовательности
- Построить полное бинарное дерево из последовательности предварительного порядка с информацией о листовых узлах
- Построить полное бинарное дерево из последовательности прямого и обратного порядка
- Установить следующий указатель на неупорядоченный преемник всех узлов в бинарном дереве
- Эффективно вывести все узлы между двумя заданными уровнями в бинарном дереве
- Найти прямой обход бинарного дерева по его прямому и обратному порядку
- Найти разницу между суммой всех узлов, находящихся на нечетных и четных уровнях бинарного дерева
- Найти размер наибольшего BST в бинарном дереве
- Вывести узлы заданного бинарного дерева в вертикальном порядке
- Узлы связи представлены на каждом уровне бинарного дерева в виде связанного списка
- Построить декартово дерево из обхода по порядку
- Реализация структуры данных Treap (вставка, поиск и удаление)
- Поиск в глубину (DFS) против поиска в ширину (BFS)
- Клонировать бинарное дерево со случайными указателями
- Двоичное дерево с нитями: обзор и реализация
- Инвертировать альтернативные уровни совершенного бинарного дерева
- Преобразовать бинарное дерево в двусвязный список по спирали
- Проверить, является ли бинарное дерево min-heap или нет
Бинарное дерево поиска
- Вставка в БСТ
- Поиск заданного ключа в BST
- Удаление из БСТ
- Построить сбалансированный BST по заданным ключам
- Определить, является ли заданное бинарное дерево BST или нет
- Проверить, представляют ли заданные ключи одинаковые BST или нет, не создавая BST
- Найти предшественника по порядку для данного ключа в BST
- Найти наименьшего общего предка (LCA) двух узлов в двоичном дереве поиска
- Найти K-й наименьший и K-й наибольший элемент в BST
- Пол и потолок в бинарном дереве поиска
- Найти оптимальную стоимость построения бинарного дерева поиска
- Преобразуйте двоичное дерево в BST, сохранив его исходную структуру
- Удалить из BST узлы, ключи которых находятся за пределами допустимого диапазона
- Найти пару с заданной суммой в BST
- Найти преемника по порядку для данного ключа в BST
- Заменить каждый элемент массива наименьшим большим элементом справа от него
- Исправить бинарное дерево, которое находится всего в одном обмене от превращения в BST
- Обновить каждый ключ в BST, чтобы он содержал сумму всех больших ключей
- Проверить, представляет ли данная последовательность обход BST в прямом порядке
- Построение бинарного дерева поиска из последовательности в обратном порядке
- Построить бинарное дерево поиска из последовательности предварительного заказа
- Найти тройку с заданной суммой в BST
- Подсчитать поддеревья в BST, узлы которых лежат в заданном диапазоне
- Объединить два BST в двусвязный список в отсортированном порядке
- Построить сбалансированный по высоте BST из неуравновешенного BST
- Найти размер наибольшего BST в бинарном дереве
- Преобразование двоичного дерева поиска в минимальную кучу
Разделяй и властвуй
- Бинарный поиск
- Найти число оборотов в циклически отсортированном массиве
- Поиск элемента в круговом отсортированном массиве
- Найти первое или последнее вхождение заданного числа в отсортированном массиве
- Подсчет вхождений числа в отсортированном массиве с дубликатами
- Найти наименьший недостающий элемент в отсортированном массиве
- Найти пол и потолок числа в отсортированном массиве
- Поиск в почти отсортированном массиве за время O(log(n))
- Найти количество единиц в отсортированном двоичном массиве
- Найти пиковый элемент в массиве
- Максимальный подмассив суммы с помощью Divide & Conquer
- Найти минимальный и максимальный элемент в массиве, используя минимальные сравнения
- Эффективно реализовать силовую функцию | Рекурсивный и итеративный
- Найти пропущенный член в последовательности за лог(n) раз
- Деление двух чисел с использованием алгоритма двоичного поиска
- Найти пол и потолок числа в отсортированном массиве (Рекурсивное решение)
- Найти минимальный и максимальный элемент в массиве, выполнив минимальное сравнение
- Найти частоту каждого элемента в отсортированном массиве, содержащем дубликаты
- Тернарный поиск против бинарного поиска
- Экспоненциальный поиск
- Интерполяционный поиск
- Алгоритм сортировки слиянием
- Алгоритм итеративной сортировки слиянием (сортировка слиянием снизу вверх)
- Алгоритм сортировки слиянием для односвязного списка
- Сортировка двусвязного списка с помощью сортировки слиянием
- Объединить K отсортированных связанных списков
- Счетчик инверсии массива
- Алгоритм быстрой сортировки
- Итеративное внедрение быстрой сортировки
- Гибридная быстрая сортировка
- Быстрая сортировка с использованием алгоритма голландского национального флага
- Быстрая сортировка по схеме разбиения Хоара
- Разделение положительных и отрицательных целых чисел с помощью сортировки слиянием
Динамическое программирование
- Введение в динамическое программирование
- Самая длинная общая подпоследовательность | Введение и длина LCS
- Самая длинная общая подпоследовательность | Космическая оптимизированная версия
- Самая длинная общая подпоследовательность K-последовательностей
- Самая длинная общая подпоследовательность | Поиск всех LCS
- Самая длинная общая подстрока
- Самая длинная палиндромная последовательность с использованием динамического программирования
- Задача на самую длинную повторяющуюся подпоследовательность
- Внедрение утилиты Diff
- Кратчайшая общая суперпоследовательность | Введение и длина SCS
- Кратчайшая общая суперпоследовательность | Нахождение всех СКС
- Кратчайшая общая суперпоследовательность | Использование ЛКС
- Самая длинная возрастающая подпоследовательность с использованием динамического программирования
- Самая длинная битоническая последовательность
- Увеличение подпоследовательности с максимальной суммой
- Задача о расстоянии Левенштейна (расстоянии редактирования)
- Найти размер наибольшей квадратной подматрицы из единиц, присутствующих в данной бинарной матрице
- Матричное умножение цепочек
- Найти минимальную стоимость достижения последней ячейки матрицы из ее первой ячейки
- Найти самую длинную последовательность, образованную соседними числами в матрице
- Подсчитать количество путей в матрице с заданной стоимостью достижения ячейки назначения
- 0–1 задача о рюкзаке
- Максимизировать значение выражения
- Проблема раздела
- Задача суммы подмножества
- Задача о разделе минимальной суммы
- Найти все N-значные двоичные строки без последовательных единиц
- Розовая резка
- Максимальная резка стержня продукта
- Задача на размен монет (неограниченный запас монет)
- Задача на размен монет. Найдите общее количество способов получить номинал монет
- Все возможные решения линейного уравнения от k переменных
- Самая длинная чередующаяся подпоследовательность
- Подсчитать, сколько раз шаблон появляется в данной строке как подпоследовательность
- Набрать максимальное количество точек в матрице, удовлетворяя заданным ограничениям
- Посчитайте все возможные комбинации N-значных чисел в клавиатуре мобильного телефона
- Найти оптимальную стоимость построения бинарного дерева поиска
- Проблема с разрывом слов
- Проблема разрыва слов | Использование структуры данных Trie
- Определить минимальную стоимость настройки массива
- Проверить, является ли строка К-палиндромом или нет
- Найти все способы получить заданную сумму за n бросков игральных костей с k гранями
- Сопоставление шаблона с подстановочными знаками
- Найдите количество способов заполнить матрицу N x 4 плитками 1 x 4
- Способы добраться до нижнего правого угла матрицы ровно за k ходов
- Задача взвешенного интервального планирования
- Задача укладки коробок
- Найти общее количество способов подняться на n-ю ступеньку не более чем за m шагов
- Найти общее количество способов подняться на n-ю ступеньку снизу
- Задача выбора деятельности с использованием динамического программирования
- Найти минимальное количество удалений, необходимых для преобразования строки в палиндром
- Рассчитать минимальную стоимость доставки из исходного города в город назначения
- Взвешенное интервальное планирование — решение для динамического программирования
- Найти минимальное количество прыжков, необходимое для достижения пункта назначения
- Найти вероятность того, что человек останется жив, сделав N шагов по острову
- Вычислить сумму всех элементов подматрицы за постоянное время
- Найти подматрицу максимальной суммы K x K в заданной матрице M x N
- Найти подматрицу максимальной суммы, присутствующую в заданной матрице
- Найти максимальную сумму подпоследовательности без соседних элементов
- Задача на максимальный подмассив (алгоритм Кадане)
- Кратчайшие пути из одного источника — алгоритм Беллмана Форда
- Кратчайшие пути для всех пар — алгоритм Флойда Уоршелла
- Задача на самую длинную убывающую последовательность
- Игра Pots of Gold с использованием динамического программирования
- Найти минимальные разрезы, необходимые для палиндромного разбиения строки
- Последовательность змей максимальной длины
- Проблема 3-х разделов
- Рассчитать размер наибольшего плюса 1 в двоичной матрице
- Проверить, является ли данная строка чередованием двух других заданных строк
- Самая длинная возрастающая подпоследовательность с использованием LCS
- Определить цикл отрицательного веса в графе
- Задача на самый длинный чередующийся подмассив
График
- Терминология и представления графов
- Реализация графа с использованием STL
- Реализация графа на C++ без использования STL
- Реализация графа на C
- Реализация графа в Java с использованием коллекций
- Поиск в ширину (BFS) | Итеративная и рекурсивная реализация
- Поиск в глубину (DFS) | Итеративная и рекурсивная реализация
- Время прихода и ухода вершин в DFS
- Типы ребер, участвующих в DFS, и связь между ними
- Двудольный граф
- Определить, является ли данный граф двудольным графом, используя DFS
- Минимальное количество бросков, необходимое для победы в игре «Змейка и лестница»
- Топологическая сортировка в DAG
- Алгоритм топологической сортировки Кана
- Транзитивное замыкание графа
- Проверить, содержит ли неориентированный граф цикл или нет
- Всего путей в заданном орграфе от заданного источника до пункта назначения, имеющих ровно m ребер
- Определить, является ли неориентированный граф деревом (ациклическим связным графом)
- 2-Edge Connectivity в графе
- 2-вершинная связность в графе
- Проверить, является ли данный орграф DAG (направленным ациклическим графом) или нет
- Структура данных непересекающихся множеств (алгоритм объединения-поиска)
- Задача о шахматном коне — найти кратчайший путь от источника к месту назначения
- Проверить, является ли данный граф сильно связанным или нет
- Проверить, является ли данный граф сильно связанным или не использует один обход DFS
- Алгоритм Union-Find для обнаружения циклов в неориентированном графе
- Алгоритм Крускала для нахождения минимального остовного дерева
- Кратчайшие пути из одного источника — алгоритм Дейкстры
- Кратчайшие пути из одного источника — алгоритм Беллмана Форда
- Кратчайшие пути для всех пар — алгоритм Флойда Уоршелла
- Найти стоимость кратчайшего пути в DAG с помощью одного прохода Беллмана-Форда
- Путь с наименьшей стоимостью во взвешенном орграфе с использованием BFS
- Найти путь максимальной стоимости в графе от заданного источника до пункта назначения
- Определить цикл отрицательного веса в графе
- Путь с наименьшей стоимостью в заданном орграфе от заданного источника до пункта назначения, имеющий ровно m ребер
- Найти путь между заданными вершинами в ориентированном графе
- Найти все возможные топологические порядки DAG
- Найди правильный порядок алфавитов в данном словаре древнего происхождения
- Найти самый длинный путь в направленном ациклическом графе (DAG)
- Вывести все k-раскрашиваемые конфигурации графа (Раскраска вершин графа)
- Вывести все гамильтоновы пути, присутствующие в графе
- Жадная раскраска графа
- Поиск в глубину (DFS) против поиска в ширину (BFS)
куча
- Введение в приоритетные очереди с использованием двоичных куч
- Реализация минимальной и максимальной кучи на C++
- Реализация минимальной и максимальной кучи в Java
- Алгоритм сортировки кучей
- Проверить, представляет ли данный массив минимальную кучу или нет
- Преобразовать максимальную кучу в минимальную кучу за линейное время
- Найти K-й самый большой элемент в массиве
- Сортировка K-сортированного массива
- Объединить M отсортированных списков переменной длины
- Объединить K отсортированных связанных списков
- Найти K-й наименьший элемент в массиве
- Найти наименьший диапазон, содержащий хотя бы один элемент из каждого из заданных списков
- Объединить M отсортированных списков, каждый из которых содержит N элементов
- Внешняя сортировка слиянием
- Кодирование Хаффмана
- Найти первые k максимальных слов в заданном наборе строк
- Найти первые k неповторяющихся символов в строке за один проход
- Реализация структуры данных Treap (вставка, поиск и удаление)
- Преобразование двоичного дерева поиска в минимальную кучу
- Проверить, является ли бинарное дерево min-heap или нет
Связанный список
- Введение в связанные списки
- Реализация связанного списка | Часть 1
- «Реализация связанного списка | Часть 2"
- Статический связанный список на C
- Клонировать данный связанный список
- Удалить связанный список
- Операция всплывающего окна в связанном списке
- Вставить данный узел в правильную отсортированную позицию в данном отсортированном связанном списке
- Учитывая связанный список, измените его так, чтобы он был отсортирован
- Разделить узлы данного связанного списка на переднюю и заднюю половины
- Удалить дубликаты из отсортированного связанного списка
- Переместить передний узел данного списка в начало другого списка
- Переместить четные узлы в конец списка в обратном порядке
- Разбить заданный связанный список на два списка, где каждый список содержит чередующиеся элементы из него
- Построить связанный список путем слияния альтернативных узлов двух заданных списков
- Алгоритм сортировки слиянием для односвязного списка
- Объединить два отсортированных связанных списка в один
- Объединить K отсортированных связанных списков
- Пересечение двух заданных отсортированных связанных списков
- Обратно связанный список | Часть 1 (Итеративное решение)
- Обратно связанный список | Часть 2 (Рекурсивное решение)
- Обратить каждую группу из k узлов в заданном связанном списке
- Найти K-й узел с конца в связанном списке
- Объединить альтернативные узлы двух связанных списков в первый список
- Объединить два отсортированных связанных списка с конца
- Удалить каждые N узлов в связанном списке после пропуска M узлов
- Переупорядочить связанный список определенным образом за линейное время
- Проверить, является ли связанный список палиндромом или нет
- Переместить последний узел вперед в заданном связанном списке
- Переупорядочить связанный список особым образом
- Обнаружение цикла в связанном списке (алгоритм обнаружения цикла Флойда)
- Сортировать связанный список, содержащий 0, 1 и 2
- Реализация стека с использованием связанного списка
- Реализация очереди с использованием связанного списка
- Удалить дубликаты из связанного списка
- Перестройте связанный список так, чтобы в нем чередовались высокие и низкие значения
- Изменение связанного списка путем отделения нечетных узлов от четных
- Вычислить высоту бинарного дерева с листовыми узлами, образующими круговой двусвязный список
- Связанный список XOR: обзор и реализация
- Преобразование многоуровневого связанного списка в односвязный список
- Рекурсивно проверить, является ли связанный список символов палиндромом или нет
- Объединить два BST в двусвязный список в отсортированном порядке
- Удалить лишние узлы из пути, образованного связным списком
- Добавить однозначное число в связанный список, представляющий число
- Обратить каждую альтернативную группу из k узлов в связанном списке
- Определить, является ли данный связанный список палиндромом или нет
- Сортировка двусвязного списка с помощью сортировки слиянием
- Обратить двусвязный список
- Попарно поменять местами соседние узлы связанного списка
- Сгладить связанный список
- Проверить, является ли связанный список строк палиндромным
- Свести многоуровневый связанный список
- Построить сбалансированный по высоте BST из неуравновешенного BST
- Поменять местами K-й узел с начала на K-й узел с конца в связанном списке
- Добавить два связанных списка без использования дополнительного места
- Клонирование связанного списка со случайными указателями
- Обновить случайный указатель для каждого узла связанного списка, чтобы он указывал на максимальный узел
- Узлы связи представлены на каждом уровне бинарного дерева в виде связанного списка
- Преобразование троичного дерева в двусвязный список
- Вывести узлы заданного бинарного дерева в вертикальном порядке
- Преобразовать бинарное дерево в двусвязный список по спирали
Матрица
- Матрица печати в спиральном порядке
- Создать спиральную матрицу из заданного массива
- Сдвинуть все элементы матрицы на 1 в порядке спирали
- Найти кратчайший путь от источника к месту назначения в матрице, удовлетворяющей заданным ограничениям
- Заменить все элементы строки i и столбца j в матрице на 0, если ячейка (i, j) имеет значение 0
- Выведите диагональные элементы матрицы, имеющие положительный наклон
- Найти все пути от первой до последней ячейки матрицы
- Заменить все вхождения 0, которые не окружены 1 в двоичной матрице
- На месте повернуть матрицу на 90 градусов по часовой стрелке
- Подсчет отрицательных элементов, присутствующих в отсортированной матрице, за линейное время
- Отчет обо всех вхождениях элемента в матрицу, отсортированную по строкам и столбцам, за линейное время
- Вычислить сумму всех элементов подматрицы за постоянное время
- Найти подматрицу максимальной суммы K x K в заданной матрице M x N
- Найти подматрицу максимальной суммы, присутствующую в заданной матрице
- Найти вероятность того, что человек останется жив, сделав N шагов по острову
- Сосчитай количество островов
- Алгоритм заливки
- Найти кратчайший безопасный маршрут в поле с датчиками
- Найти все вхождения заданной строки в матрицу символов
- Кратчайший путь в лабиринте | Алгоритм Ли
- Проверить, является ли данная матрица матрицей Теплица или нет
- На месте повернуть матрицу на 180 градусов
- Заполнить бинарную матрицу чередующимися прямоугольниками из 0 и 1
- Найти все общие элементы, присутствующие в каждой строке данной матрицы
- Построить бинарное дерево из матрицы предков
- Найти общие элементы, присутствующие во всех строках матрицы
- Найти индекс строки, содержащей максимальное количество единиц в двоичной матрице
- Создать список возможных слов из матрицы символов
- Найди наибольшую квадратную подматрицу, окруженную всеми единицами
- Отсортировать массив с помощью таблицы Юнга
- Молодая картина | Вставить, найти, извлечь-минимум, удалить, заменить
- Найти минимальные проходы, необходимые для преобразования всех отрицательных значений в матрице
- Набрать максимальное количество точек в матрице, удовлетворяя заданным ограничениям
- Подсчитать количество путей в матрице с заданной стоимостью достижения ячейки назначения
- Найти самую длинную последовательность, образованную соседними числами в матрице
- Найти минимальную стоимость достижения последней ячейки матрицы из ее первой ячейки
- Способы добраться до нижнего правого угла матрицы ровно за k ходов
- Матричное умножение цепочек
- Найти размер наибольшей квадратной подматрицы из единиц, присутствующих в данной бинарной матрице
- Задача о шахматном коне — найти кратчайший путь от источника к месту назначения
- Найти повторяющиеся строки в бинарной матрице
- Выведите все возможные решения задачи N ферзей
- Выведите все возможные ходы коня на шахматной доске
- Найди кратчайший путь в лабиринте
- Найти максимально длинный маршрут в матрице
- Найти общее количество уникальных путей в лабиринте от источника к месту назначения
- Рассчитать размер наибольшего плюса 1 в двоичной матрице
- Найти максимальное значение M[c][d] — M[a][b] по всем вариантам индексов
- Найти кратчайшее расстояние каждой клетки от мины в лабиринте
- Найти кратчайший путь в устройстве для построения заданной строки
- Задача коммивояжера с использованием ветвей и границ
- Рассчитать минимальную стоимость доставки из исходного города в город назначения
Очередь
- Реализация очереди
- Реализация очереди с использованием связанного списка
- Реализовать стек с использованием структуры данных очереди
- Реализовать очередь, используя структуру данных стека
- Эффективно вывести все узлы между двумя заданными уровнями в бинарном дереве
- Задача о шахматном коне — найти кратчайший путь от источника к месту назначения
- Кратчайший путь в лабиринте | Алгоритм Ли
- Найти кратчайший безопасный маршрут в поле с датчиками
- Алгоритм заливки
- Сосчитай количество островов
- Найти кратчайший путь от источника к месту назначения в матрице, удовлетворяющей заданным ограничениям
- Генерировать двоичные числа от 1 до N
- Вычислить высоту бинарного дерева | Итеративный и рекурсивный
- Удалить заданное бинарное дерево | Итеративный и рекурсивный
- Уровневый обход бинарного дерева
- Спиральный обход бинарного дерева
- Обход двоичного дерева в обратном порядке
- Вывести все узлы заданного бинарного дерева в определенном порядке
- Печатать левое представление бинарного дерева
- Найти следующий узел на том же уровне для данного узла в бинарном дереве
- Проверить, является ли заданное бинарное дерево полным бинарным деревом или нет
- Печать диагонального обхода бинарного дерева
- Вывести угловые узлы каждого уровня бинарного дерева
- Инвертировать заданное бинарное дерево | Рекурсивное и итеративное решение
- Найти минимальные проходы, необходимые для преобразования всех отрицательных значений в матрице
- Преобразовать бинарное дерево в двусвязный список по спирали
- Проверить, является ли бинарное дерево min-heap или нет
- Инвертировать альтернативные уровни совершенного бинарного дерева
- Преобразование двоичного дерева поиска в минимальную кучу
- Минимальное количество бросков, необходимое для победы в игре «Змейка и лестница»
- Найти кратчайшее расстояние каждой клетки от мины в лабиринте
- Преобразование многоуровневого связанного списка в односвязный список
- Поиск в ширину (BFS) | Итеративная и рекурсивная реализация
- Проверить, содержит ли неориентированный граф цикл или нет
- Найти путь максимальной стоимости в графе от заданного источника до пункта назначения
- Общее количество путей в заданном орграфе от заданного источника до пункта назначения, имеющих ровно m ребер
- Путь с наименьшей стоимостью в заданном орграфе от заданного источника до пункта назначения, имеющий ровно m ребер
Сортировка
- Сортировка вставками | Итеративный и рекурсивный
- Сортировка выбором | Итеративный и рекурсивный
- Пузырьковая сортировка | Итеративный и рекурсивный
- Алгоритм сортировки слиянием
- Алгоритм итеративной сортировки слиянием (сортировка слиянием снизу вверх)
- Алгоритм быстрой сортировки
- Итеративное внедрение быстрой сортировки
- Гибридная быстрая сортировка
- Быстрая сортировка с использованием алгоритма голландского национального флага
- Быстрая сортировка по схеме разбиения Хоара
- Внешняя сортировка слиянием
- Алгоритм сортировки подсчетом
- Пользовательская сортировка | Сортировать элементы по их частоте и индексу
- Пользовательская сортировка | Отсортировать элементы массива по порядку элементов, заданному вторым массивом
- Счетчик инверсии массива
- Разделение положительных и отрицательных целых чисел за линейное время
- Эффективная сортировка массива с большим количеством повторяющихся значений
- Отсортировать массив с помощью таблицы Юнга
- Проблемы, решаемые с помощью логики секционирования быстрой сортировки
- Найти наименьшее окно в сортировке массива, при котором будет отсортирован весь массив
- Найти наибольшее возможное число из множества заданных чисел
- Переместить все нули, присутствующие в массиве, в конец
- Сортировка бинарного массива за линейное время
- Сортировать связанный список, содержащий 0, 1 и 2
- Алгоритм сортировки слиянием для односвязного списка
- Сортировка двусвязного списка с помощью сортировки слиянием
- Группировать анаграммы вместе из заданного списка слов
- Проблема выбора деятельности
- Лексикографическая сортировка заданного набора ключей
- Алгоритм сортировки кучей
- Объединить M отсортированных списков переменной длины
- Объединить M отсортированных списков, каждый из которых содержит N элементов
- Найти все палиндромные перестановки строки
- Найти все лексикографически следующие перестановки строки, отсортированные по возрастанию
- Объединить два отсортированных связанных списка с конца
- Отсортировать массив, содержащий 0, 1 и 2 (задача о голландском национальном флаге)
- Найти пару с заданной суммой в массиве
- На месте объединить два отсортированных массива
- Объединить два массива, удовлетворяя заданным ограничениям
- Найти максимальное произведение двух целых чисел в массиве
- Найти все различные комбинации заданной длины
- Найти все различные комбинации заданной длины с допустимым повторением
- Объединение перекрывающихся интервалов
- Выведите все четверки с заданной суммой | расширенная задача о 4 суммах
- Задача на 4 суммы | Четверки с заданной суммой
- Найти два числа с максимальной суммой, образованной цифрами массива
- Найди тройку с максимальным произведением в массиве
- Найти минимальное произведение среди всех комбинаций триплетов в массиве
- Найти все различные комбинации заданной длины — Часть 2
- Найти количество превосходящих элементов для каждого элемента массива
- Разделение положительных и отрицательных целых чисел с помощью сортировки слиянием
Куча
- Реализация стека
- Реализация стека с использованием связанного списка
- Проверить, является ли данное выражение сбалансированным выражением или нет
- Найти повторяющиеся скобки в выражении
- Вычислить заданное постфиксное выражение
- Расшифруйте заданную последовательность, чтобы построить минимальное число без повторяющихся цифр
- Разработайте стек, который возвращает минимальный элемент за постоянное время
- Разработайте стек, который возвращает минимальный элемент без использования вспомогательного стека
- Перевернуть строку без использования рекурсии
- Реализовать стек с использованием структуры данных очереди
- Реализовать очередь, используя структуру данных стека
- Реализовать два стека в одном массиве
- Рекурсивное решение для сортировки стека
- Перевернуть строку, используя стековую структуру данных
- Найти в массиве все элементы, которые больше, чем все элементы справа от них
- Обход дерева по порядку | Итеративный и рекурсивный
- Предзаказ обхода дерева | Итеративный и рекурсивный
- Обход дерева пост-заказов | Итеративный и рекурсивный
- Найти прямой обход бинарного дерева по его прямому и обратному порядку
- Найти предков данного узла в бинарном дереве
- Проверить, идентичны ли два заданных бинарных дерева | Итеративный и рекурсивный
- Обход двоичного дерева в обратном порядке
- Обратить заданный текст, не меняя местами отдельные слова
- Найти все бинарные строки, которые можно составить из заданного шаблона подстановочных знаков
- Итеративное внедрение быстрой сортировки
- Поиск в глубину (DFS) | Итеративная и рекурсивная реализация
- Инвертировать заданное бинарное дерево | Рекурсивное и итеративное решение
- Вывести путь от листа к корню для каждого листа в бинарном дереве
- Самая длинная возрастающая последовательность
- Инвертировать альтернативные уровни совершенного бинарного дерева
Нить
- Проверить, является ли заданная строка повернутым палиндромом или нет
- Самая длинная палиндромная подстрока (оптимизированное пространство без DP)
- Проверить, есть ли в строке повторяющаяся подпоследовательность
- Проверить, можно ли получить строки друг из друга, вращая их по кругу
- Проверить, является ли данный набор ходов круговым или нет
- Преобразовать данное число в соответствующее имя столбца Excel
- Определить, являются ли две строки анаграммой или нет
- Найти все бинарные строки, которые можно составить из заданного шаблона подстановочных знаков
- Найти все чередования заданных строк
- Изоморфные струны
- Найти все возможные палиндромные подстроки в строке
- Найти все возможные сочетания слов, образованные с клавиатуры мобильного телефона
- Найти все возможные комбинации, заменив заданные цифры символами из соответствующего списка
- Найти все слова из данного списка, которые следуют тому же порядку символов, что и заданный шаблон
- Найти первые k неповторяющихся символов в строке за один проход
- Группировать анаграммы вместе из заданного списка слов
- Введение в сопоставление с образцом
- На месте удалите все вхождения «AB и C из строки»
- Самая длинная подстрока палиндромной суммы четной длины
- Вывести строку зигзагом в k строк
- Обратить заданный текст, не меняя местами отдельные слова
- Алгоритм сжатия данных Run Length Encoding (RLE)
- Подтвердить IP-адрес
- Найти самую длинную подстроку заданной строки, содержащую k различных символов
- Найти все палиндромные перестановки строки
- Найти все подстроки строки, являющиеся перестановкой данной строки
- Найти самую длинную подстроку заданной строки, содержащую все различные символы
- Найти все перестановки заданной строки
- Итеративный подход к поиску перестановок строки
- Создать все перестановки строки в Java | Рекурсивный и итеративный
- Найти все лексикографически следующие перестановки строки, отсортированные по возрастанию
- Найти лексикографически минимальное вращение строки
- Найти все строки заданной длины, содержащие сбалансированные скобки
- Найти все N-значные строго возрастающие числа (подход снизу вверх и сверху вниз)
- Найти все N-значные двоичные числа, в которых единиц больше, чем нулей для любого префикса
- Найти все N-значные числа с заданной суммой цифр
- Найти все N-значные двоичные числа с набором k битов, где k находится в диапазоне от 1 до N
- Генерировать двоичные числа от 1 до N
- Найти все комбинации непересекающихся подстрок строки
- Проверить, является ли данное предложение синтаксически правильным или нет
- Вычислить ранг заданной строки среди всех ее лексикографически отсортированных перестановок
- Найти все лексикографические перестановки строки
- Найти все N-значные двоичные числа с одинаковой суммой битов в двух его половинах
- Проверить, является ли данная строка чередованием двух других заданных строк
- Разница между подмассивом, подпоследовательностью и подмножеством
- std::next_permutation | Обзор и реализация на C++
- std::prev_permutation | Обзор и реализация на C++
- Реализация алгоритма KMP
- Обратить строку без использования рекурсии
- Обратить заданную строку с помощью рекурсии
- Определить, является ли заданная строка палиндромом или нет
- На месте удалить все соседние дубликаты из данной строки
- Найдите минимальное количество инверсий, необходимое для того, чтобы данное выражение стало уравновешенным
- Заменить все непересекающиеся вхождения шаблона
- Построить самый длинный палиндром, перетасовав или удалив символы из строки
- Определить, следуют ли символы строки в указанном порядке или нет
- Выведите все комбинации словосочетаний, которые можно составить, выбирая слова из каждого из заданных списков
- Удалить все лишние пробелы из строки
- Разбить строку на все возможные комбинации непересекающихся подстрок
- Удалить соседние повторяющиеся символы из строки
- Найти первый неповторяющийся символ в строке, выполнив только один ее обход
- Найти все N-значные числа с одинаковой суммой цифр в четном и нечетном индексе
- Найти все лексикографически предыдущие перестановки строки, отсортированные по убыванию
- Сочетания слов, образованные заменой данных цифр соответствующими алфавитами
- Проблема с разрывом слов
- Сопоставление шаблона с подстановочными знаками
- Подсчитать, сколько раз шаблон появляется в данной строке как подпоследовательность
- Задача о расстоянии Левенштейна (расстоянии редактирования)
- Самая длинная общая подпоследовательность | Введение и длина LCS
- Самая длинная общая подпоследовательность | Космическая оптимизированная версия
- Самая длинная общая подпоследовательность K-последовательностей
- Самая длинная общая подпоследовательность | Поиск всех LCS
- Задача на самую длинную повторяющуюся подпоследовательность
- Самая длинная палиндромная последовательность с использованием динамического программирования
- Самая длинная общая подстрока
- Кратчайшая общая суперпоследовательность | Введение и длина SCS
- Кратчайшая общая суперпоследовательность | Нахождение всех СКС
- Кратчайшая общая суперпоследовательность | Использование ЛКС
- Внедрение утилиты Diff
- Проблема разрыва слов | Использование структуры данных Trie
- Найти минимальные разрезы, необходимые для палиндромного разбиения строки
- Проверить, является ли строка К-палиндромом или нет
- Найти кратчайший путь в устройстве для построения заданной строки
- Найти минимально возможное число, сделав не более K свопов
- Определить, совпадает ли шаблон со строкой или нет
- Найди правильный порядок алфавитов в данном словаре древнего происхождения
- Найти минимальное количество удалений, необходимых для преобразования строки в палиндром
попробовать
- Пробная реализация | Вставить, найти и удалить
- Реализация Trie с эффективным использованием памяти с использованием Map | Вставить, найти и удалить
- Реализация структуры данных Trie на C++
- Самый длинный общий префикс в заданном наборе строк (с использованием Trie)
- Лексикографическая сортировка заданного набора ключей
- Найти максимальное встречающееся слово в заданном наборе строк
- Найти первые k максимальных слов в заданном наборе строк
- Найти повторяющиеся строки в бинарной матрице
- Проблема разрыва слов | Использование структуры данных Trie
- Создать список возможных слов из матрицы символов
Жадный
- Проблема выбора деятельности
- Кодирование Хаффмана
- Проблема последовательности работ со сроками
- Жадная раскраска графа
- Алгоритм Крускала для нахождения минимального остовного дерева
- Кратчайшие пути из одного источника — алгоритм Дейкстры
- Задача о кратчайшей суперструне
Загадки
- Задача угла часов — Найдите угол между часовой и минутной стрелками
- Добавить два числа без использования оператора сложения
- Создать набор мощности заданного набора
- Реализовать степенную функцию без использования операторов умножения и деления
- Вывести все числа от 1 до N без точки с запятой
- Поменять местами два числа без использования третьей переменной
- Определить условие if для печати определенного вывода
- Найти максимум, минимум три числа без использования условного оператора и тернарного оператора
- Найти числа, представленные в виде суммы двух кубов для двух разных пар
- Напечатать «Hello World с пустой функцией main()»
- Проблема Ханойской башни
- Вывести все числа от 1 до N без использования цикла
- Напечатать точку с запятой без использования точки с запятой в программе
- Умножение двух чисел без использования оператора умножения или циклов
- Найти квадрат числа без использования оператора умножения и деления
- Определить, является ли число четным или нечетным без использования условного оператора
- Установить оба элемента бинарного массива равными 0 в одной строке
- Найти минимальное число без использования условного оператора или тернарного оператора
- Выполнить деление двух чисел без использования оператора деления (/)
- Сгенерировать 0 и 1 с вероятностью 75% и 25%
- Генерировать желаемые случайные числа с равной вероятностью
- Вернуть 0, 1 и 2 с равной вероятностью, используя указанную функцию
- Получите честные результаты от предвзятой монеты
- Сгенерировать числа от 1 до 7 с равной вероятностью, используя указанную функцию
- Реализовать тернарный оператор без использования условных выражений
- Определить, равны ли два целых числа без использования операций сравнения и арифметических операций
- Вернуть 0 и 1 с равной вероятностью, используя указанную функцию
- Сгенерировать случайный ввод из массива в соответствии с заданными вероятностями
- Получите честные результаты от предвзятой монеты
- Магнитный пазл