Множество

  1. Найти пару с заданной суммой в массиве
  2. Проверить, существует ли подмассив с суммой 0
  3. Вывести все подмассивы с суммой 0
  4. Сортировка бинарного массива за линейное время
  5. Найти повторяющийся элемент в массиве с ограниченным диапазоном
  6. Найти подмассив максимальной длины по заданной сумме
  7. Найти подмассив максимальной длины, имеющий равное количество нулей и единиц
  8. Отсортировать массив, содержащий 0, 1 и 2 (задача о голландском национальном флаге)
  9. На месте объединить два отсортированных массива
  10. Объединить два массива, удовлетворяя заданным ограничениям
  11. Найти индекс 0 для замены, чтобы получить последовательность непрерывных единиц максимальной длины
  12. Найти максимальное произведение двух целых чисел в массиве
  13. Перетасовка заданного массива элементов (перетасовка Фишера–Йейтса)
  14. Переставить массив с чередующимися старшими и младшими элементами
  15. Найти индекс равновесия массива
  16. Найти наибольший подмассив, образованный последовательными целыми числами
  17. Найти мажоритарный элемент в массиве (алгоритм голосования Бойера–Мура)
  18. Переместить все нули, присутствующие в массиве, в конец
  19. Заменить каждый элемент массива произведением любого другого элемента без использования оператора /
  20. Найти самый длинный битонический подмассив в массиве
  21. Найти максимальную разницу между двумя элементами массива, удовлетворяя заданным ограничениям
  22. Задача на максимальный подмассив (алгоритм Кадане)
  23. Вывести непрерывный подмассив с максимальной суммой
  24. Циклический подмассив максимальной суммы
  25. Найти все различные комбинации заданной длины
  26. Найти все различные комбинации заданной длины с допустимым повторением
  27. Найти максимальную последовательность непрерывных единиц, образованную заменой не более чем k нулей единицами
  28. Найти подмассив минимальной суммы заданного размера k
  29. Найти подмассив с заданной суммой в заданном массиве целых чисел
  30. Найти длину наименьшего подмассива, сумма элементов которого больше заданного числа
  31. Найти наибольшее возможное число из множества заданных чисел
  32. Найти наименьшее окно в сортировке массива, при котором будет отсортирован весь массив
  33. Найти путь максимальной суммы, включающий элементы заданных массивов
  34. Максимальная прибыль, полученная при покупке и продаже акций любое количество раз
  35. Улавливание дождевой воды в заданном наборе баров
  36. Самая длинная возрастающая последовательность
  37. Задача на самую длинную убывающую последовательность
  38. Найти максимальный подмассив товаров в заданном массиве
  39. Найти максимальную сумму подпоследовательности без соседних элементов
  40. Найти минимально необходимое количество платформ на станции, чтобы избежать задержки прибытия любого поезда
  41. Декодировать массив, построенный из другого массива
  42. Сортировка массива одним свопом
  43. Найти триплет с заданной суммой в массиве
  44. Длина самой длинной непрерывной последовательности с одинаковой суммой в заданных двоичных массивах
  45. Переупорядочить массив таким образом, чтобы A[A[i]] был равен i для каждого элемента A[i]
  46. Обратить каждые m последовательных элементов данного подмассива
  47. Задача о максимальном подмножестве продуктов
  48. Найти в массиве пары с заданной разностью k
  49. Найти пары с заданной разностью k в массиве | Решение с постоянным пространством
  50. Задача на 4 суммы | Четверки с заданной суммой
  51. Выведите все четверки с заданной суммой | расширенная задача о 4 суммах
  52. Найти лишний элемент в массиве за один проход
  53. Найти два нечетных элемента в массиве без использования лишнего пробела
  54. Алгоритм быстрого выбора
  55. Выведите все триплеты, образующие арифметическую прогрессию
  56. Выведите все триплеты, образующие геометрическую прогрессию
  57. Выведите все комбинации чисел от 1 до n, сумма которых равна n
  58. Заменить каждый элемент массива соответствующим ему рангом в массиве
  59. Вывести все триплеты в массиве, сумма которых меньше или равна заданному числу
  60. Группировать элементы массива по их первому вхождению
  61. Найти минимальную разницу между индексами двух заданных элементов, присутствующих в массиве
  62. Найти максимальную абсолютную разность между суммой двух непересекающихся подмассивов
  63. Найти все симметричные пары в массиве пар
  64. Разбить массив на два подмассива с одинаковой суммой
  65. Найти количество различных элементов в каждом подмассиве размера k
  66. Найти два числа с максимальной суммой, образованной цифрами массива
  67. Вывести все подмассивы массива, имеющие различные элементы
  68. Найди тройку с максимальным произведением в массиве
  69. Найти способы вычисления цели из элементов заданного массива
  70. Найти минимальный индекс повторяющегося элемента в массиве
  71. Сгенерировать случайный ввод из массива в соответствии с заданными вероятностями
  72. Найти пару в массиве с минимальной абсолютной суммой
  73. Найти индекс максимального встречающегося элемента с равной вероятностью
  74. Проверить, образован ли массив последовательными целыми числами
  75. Найти в массиве две непересекающиеся пары, имеющие одинаковую сумму
  76. Найти минимальное произведение среди всех комбинаций триплетов в массиве
  77. Заменить каждый элемент массива наименьшим большим элементом справа от него
  78. Найти все нечетные элементы в массиве с ограниченным диапазоном элементов
  79. Добавить элементы двух массивов в новый массив
  80. Подсчитайте различные абсолютные значения в отсортированном массиве
  81. Выведите все комбинации натуральных чисел в порядке возрастания, которые в сумме дают заданное число
  82. Найти все различные комбинации заданной длины — Часть 2
  83. Найти подмассивы с заданной суммой в массиве
  84. Найти количество превосходящих элементов для каждого элемента массива
  85. Найти последовательность непрерывных элементов максимальной длины (используя скользящее окно)
  86. Найти последовательность непрерывных единиц максимальной длины
  87. Рассчитать частоту всех элементов, присутствующих в массиве заданного диапазона
  88. Перестройте массив так, чтобы он содержал положительные и отрицательные числа в чередующихся позициях
  89. Найти отсортированную тройку в заданном массиве
  90. Перемешать массив в соответствии с заданным порядком элементов
  91. Найти индекс, который делит массив на два непустых подмассива равной суммы
  92. Подсчитать количество строго возрастающих подмассивов в массиве
  93. Найти минимальный диапазон, содержащий хотя бы один элемент из каждого из заданных массивов
  94. Найти самую длинную подпоследовательность, состоящую из последовательных целых чисел
  95. Найти дубликаты в заданном диапазоне k в массиве
  96. Задача на самый длинный чередующийся подмассив
  97. Найти в массиве все элементы, которые больше, чем все элементы справа от них
  98. Найти пропущенное число в массиве без использования лишнего пробела
  99. Разница между подмассивом, подпоследовательностью и подмножеством
  100. Объединение перекрывающихся интервалов
  101. Проблема выбора деятельности
  102. Задача выбора деятельности с использованием динамического программирования
  103. Проблема последовательности работ со сроками
  104. Введение в приоритетные очереди с использованием двоичных куч
  105. Реализация минимальной и максимальной кучи на C++
  106. Реализация минимальной и максимальной кучи в Java
  107. Сортировка кучей (реализация вне места и на месте в C++ и C)
  108. Проверить, представляет ли данный массив минимальную кучу или нет
  109. Преобразовать максимальную кучу в минимальную кучу за линейное время
  110. Найти K-й самый большой элемент в массиве
  111. Сортировка K-сортированного массива
  112. Объединить M отсортированных списков переменной длины
  113. Найти K-й наименьший элемент в массиве
  114. Найти наименьший диапазон, содержащий хотя бы один элемент из каждого из заданных списков
  115. Объединить M отсортированных списков, каждый из которых содержит N элементов
  116. Пользовательская сортировка | Сортировать элементы по их частоте и индексу
  117. Пользовательская сортировка | Отсортировать элементы массива по порядку элементов, заданному вторым массивом
  118. Счетчик инверсии массива
  119. Разделение положительных и отрицательных целых чисел за линейное время
  120. Бинарный поиск
  121. Тернарный поиск против бинарного поиска
  122. Интерполяционный поиск
  123. Экспоненциальный поиск
  124. Найти число оборотов в циклически отсортированном массиве
  125. Поиск элемента в круговом отсортированном массиве
  126. Найти первое или последнее вхождение заданного числа в отсортированном массиве
  127. Подсчет вхождений числа в отсортированном массиве с дубликатами
  128. Найти наименьший недостающий элемент в отсортированном массиве
  129. Найти пол и потолок числа в отсортированном массиве
  130. Поиск в почти отсортированном массиве за время O(log(n))
  131. Найти количество единиц в отсортированном двоичном массиве
  132. Найти пиковый элемент в массиве
  133. Максимальный подмассив суммы с помощью Divide & Conquer
  134. Найти минимальный и максимальный элемент в массиве, используя минимальные сравнения
  135. Матричное умножение цепочек
  136. 0–1 задача о рюкзаке
  137. Максимизировать значение выражения
  138. Проблема раздела
  139. Задача суммы подмножества
  140. Задача о разделе минимальной суммы
  141. Розовая резка
  142. Задача на размен монет (неограниченный запас монет)
  143. Задача на размен монет (Общее количество способов получить номинал монет)
  144. Самая длинная чередующаяся подпоследовательность
  145. Сочетания слов, образованные заменой данных цифр соответствующими алфавитами
  146. Расшифруйте заданную последовательность, чтобы построить минимальное число без повторяющихся цифр
  147. Все комбинации элементов, удовлетворяющие заданным ограничениям
  148. Найти пропущенный член в последовательности за лог(n) раз
  149. Распечатать все различные подмножества данного набора
  150. Найти пол и потолок числа в отсортированном массиве (Рекурсивное решение)
  151. Установить оба элемента бинарного массива равными 0 в одной строке
  152. Проблема K-раздела | Печать всех разделов
  153. Проблема 3-х разделов
  154. Проблема с тремя разделами расширена | Распечатать все разделы
  155. Найти два повторяющихся элемента в массиве с ограниченным диапазоном (используя XOR)
  156. Найти пропущенное число и повторяющиеся элементы в массиве
  157. Найти минимальный и максимальный элемент в массиве, выполнив минимальное сравнение
  158. Найти частоту каждого элемента в отсортированном массиве, содержащем дубликаты
  159. Разделение положительных и отрицательных целых чисел с помощью сортировки слиянием
  160. Задача взвешенного интервального планирования
  161. Задача укладки коробок
  162. Взвешенное интервальное планирование — решение для динамического программирования
  163. Сортировка вставками | Итеративный и рекурсивный
  164. Сортировка выбором | Итеративный и рекурсивный
  165. Пузырьковая сортировка | Итеративный и рекурсивный
  166. "Сортировка слиянием"
  167. Алгоритм итеративной сортировки слиянием (сортировка слиянием снизу вверх)
  168. Быстрая сортировка
  169. Итеративное внедрение быстрой сортировки
  170. Гибридная быстрая сортировка
  171. Быстрая сортировка с использованием алгоритма голландского национального флага
  172. Быстрая сортировка по схеме разбиения Хоара
  173. Внешняя сортировка слиянием

Возвращение

  1. Выведите все возможные решения задачи N ферзей
  2. Выведите все возможные ходы коня на шахматной доске
  3. Найди кратчайший путь в лабиринте
  4. Найти максимально длинный маршрут в матрице
  5. Найти путь от источника к месту назначения в матрице, удовлетворяющей заданным ограничениям
  6. Найти общее количество уникальных путей в лабиринте от источника к месту назначения
  7. Вывести все гамильтоновы пути, присутствующие в графе
  8. Вывести все k-раскрашиваемые конфигурации графа (Раскраска вершин графа)
  9. Найти все перестановки заданной строки
  10. Все комбинации элементов, удовлетворяющие заданным ограничениям
  11. Найти все бинарные строки, которые можно составить из заданного шаблона подстановочных знаков
  12. Проблема K-раздела | Печать всех разделов
  13. Магнитный пазл
  14. Найти способы вычисления цели из элементов заданного массива
  15. Найти минимально возможное число, сделав не более K свопов
  16. Определить, совпадает ли шаблон со строкой или нет
  17. Создать список возможных слов из матрицы символов
  18. Найти путь между заданными вершинами в ориентированном графе
  19. Найти все возможные топологические порядки DAG

Битовые манипуляции

  1. Бит Хаки — Часть 1 (Базовая)
  2. Bit Hacks — Часть 2 (Игра с k’м битом)
  3. Bit Hacks — Part 3 (Игра с крайним правым установленным битом числа)
  4. Bit Hacks — Часть 4 (Игра с буквами английского алфавита)
  5. Бит-хаки — Часть 5 (Найти абсолютное значение целого числа без ветвления)
  6. Бит Хаки — Часть 6 (Случайные задачи)
  7. Алгоритм Брайана Кернигана для подсчета заданных битов в целом числе
  8. Вычисление четности числа с помощью интерполяционной таблицы
  9. Подсчет множества битов с помощью таблицы поиска
  10. Найти минимум или максимум двух целых чисел без использования ветвления
  11. Умножение 16-битных целых чисел с помощью 8-битного множителя
  12. Округлить до наибольшей степени числа 2
  13. Округлить до предыдущей степени числа 2
  14. Поменять местами отдельные биты в заданной позиции в целом числе
  15. Проверить, является ли данное число степенью 4 или нет
  16. Обратные биты данного целого числа
  17. Найти лишний элемент в массиве за один проход
  18. Найти два нечетных элемента в массиве без использования лишнего пробела
  19. Поменять местами два бита в заданной позиции в целом числе
  20. Добавить двоичное представление двух целых чисел
  21. Поменять местами соседние биты числа
  22. Распечатать все различные подмножества данного набора
  23. Выполнить деление двух чисел без использования оператора деления (/)
  24. Проверить, установлены ли соседние биты в двоичном представлении данного числа
  25. Условно инвертировать значение без ветвления
  26. Найти два повторяющихся элемента в массиве с ограниченным диапазоном (используя XOR)
  27. Найти пропущенное число и повторяющиеся элементы в массиве
  28. Проверить, является ли данное число степенью 8 или нет
  29. Круговой сдвиг по двоичному представлению целого числа на k позиций
  30. Решить заданный набор задач без использования операторов умножения и деления
  31. Обратные биты целого числа с помощью таблицы поиска
  32. Генерировать двоичные числа от 1 до N
  33. Эффективно реализовать силовую функцию | Рекурсивный и итеративный
  34. Найти квадрат числа без использования оператора умножения и деления
  35. Создать набор мощности заданного набора
  36. Кодирование Хаффмана
  37. Найти все нечетные элементы в массиве с ограниченным диапазоном элементов
  38. Найти пропущенное число в массиве без использования лишнего пробела

Бинарное дерево

  1. Проверить, идентичны ли два заданных бинарных дерева | Итеративный и рекурсивный
  2. Вычислить высоту бинарного дерева | Итеративный и рекурсивный
  3. Удалить заданное бинарное дерево | Итеративный и рекурсивный
  4. Обход дерева по порядку | Итеративный и рекурсивный
  5. Предзаказ обхода дерева | Итеративный и рекурсивный
  6. Обход дерева пост-заказов | Итеративный и рекурсивный
  7. Уровневый обход бинарного дерева
  8. Спиральный обход бинарного дерева
  9. Обход двоичного дерева в обратном порядке
  10. Вывести все узлы заданного бинарного дерева в определенном порядке
  11. Печатать левое представление бинарного дерева
  12. Печать нижнего вида бинарного дерева
  13. Печать вида сверху бинарного дерева
  14. Найти следующий узел на том же уровне для данного узла в бинарном дереве
  15. Проверить, является ли заданное бинарное дерево полным бинарным деревом или нет
  16. Определить, являются ли данные два узла двоюродными братьями друг другу
  17. Вывести кузенов данного узла в бинарном дереве
  18. Преобразование заданного бинарного дерева в его дерево сумм на месте
  19. Проверить, является ли заданное бинарное дерево деревом сумм или нет
  20. Сочетания слов, образованные заменой данных цифр соответствующими алфавитами
  21. Определить, является ли данное бинарное дерево поддеревом другого бинарного дерева или нет
  22. Найти диаметр бинарного дерева
  23. Проверить, имеет ли заданное бинарное дерево симметричную структуру или нет
  24. Преобразовать бинарное дерево в его зеркало
  25. Проверить, можно ли преобразовать бинарное дерево в другое, выполнив любое действие no. перестановок левого и правого дочерних элементов
  26. Найти младшего общего предка (LCA) двух узлов в бинарном дереве
  27. Вывести все пути от корневых до листовых узлов бинарного дерева
  28. Найти предков данного узла в бинарном дереве
  29. Найти расстояние между заданными парами узлов в бинарном дереве
  30. Найти вертикальную сумму в заданном двоичном дереве
  31. Печать узлов заданного бинарного дерева (вертикальный обход) в вертикальном порядке
  32. Найти диагональную сумму заданного бинарного дерева
  33. Печать диагонального обхода бинарного дерева
  34. Вывести угловые узлы каждого уровня бинарного дерева
  35. Преобразование на месте заданного двоичного дерева в двусвязный список
  36. Опустить узлы, содержащие ноль, в низ бинарного дерева
  37. Преобразовать заданное бинарное дерево в полное дерево, удалив половину узлов
  38. Обрезать заданное бинарное дерево, чтобы удалить узлы, лежащие на пути, сумма которого меньше K
  39. Найти максимальную сумму корневых путей в бинарном дереве
  40. Проверить, сбалансировано ли заданное бинарное дерево по высоте или нет
  41. Преобразовать обычное двоичное дерево в левое дочернее правое бинарное дерево
  42. Определить, является ли заданное бинарное дерево BST или нет
  43. Преобразуйте двоичное дерево в BST, сохранив его исходную структуру
  44. Инвертировать заданное бинарное дерево | Рекурсивное и итеративное решение
  45. Правая печать бинарного дерева
  46. Вывести все пути от листа к корневому узлу в заданном бинарном дереве
  47. Итеративно печатать путь от листа к корню для каждого конечного узла в бинарном дереве
  48. Найти максимальную ширину заданного бинарного дерева
  49. Построить бинарное дерево из заданного родительского массива
  50. Найти все узлы на заданном расстоянии от листовых узлов в бинарном дереве
  51. Подсчитать все поддеревья с одинаковым значением узлов в бинарном дереве
  52. Найти максимальную разницу между узлом и его потомками в бинарном дереве
  53. Построить бинарное дерево из матрицы предков
  54. Вычислить высоту бинарного дерева с листовыми узлами, образующими круговой двусвязный список
  55. Найти путь максимальной суммы между двумя листьями в бинарном дереве
  56. Исправить бинарное дерево, которое находится всего в одном обмене от превращения в BST
  57. Построить бинарное дерево из прямого и прямого обхода
  58. Построить бинарное дерево из обходов в прямом и обратном порядке
  59. Построить бинарное дерево из упорядоченной и ровной последовательности
  60. Построить полное бинарное дерево из последовательности предварительного порядка с информацией о листовых узлах
  61. Построить полное бинарное дерево из последовательности прямого и обратного порядка
  62. Установить следующий указатель на неупорядоченный преемник всех узлов в бинарном дереве
  63. Эффективно вывести все узлы между двумя заданными уровнями в бинарном дереве
  64. Найти прямой обход бинарного дерева по его прямому и обратному порядку
  65. Найти разницу между суммой всех узлов, находящихся на нечетных и четных уровнях бинарного дерева
  66. Найти размер наибольшего BST в бинарном дереве
  67. Вывести узлы заданного бинарного дерева в вертикальном порядке
  68. Узлы связи представлены на каждом уровне бинарного дерева в виде связанного списка
  69. Построить декартово дерево из обхода по порядку
  70. Реализация структуры данных Treap (вставка, поиск и удаление)
  71. Поиск в глубину (DFS) против поиска в ширину (BFS)
  72. Клонировать бинарное дерево со случайными указателями
  73. Двоичное дерево с нитями: обзор и реализация
  74. Инвертировать альтернативные уровни совершенного бинарного дерева
  75. Преобразовать бинарное дерево в двусвязный список по спирали
  76. Проверить, является ли бинарное дерево min-heap или нет

Бинарное дерево поиска

  1. Вставка в БСТ
  2. Поиск заданного ключа в BST
  3. Удаление из БСТ
  4. Построить сбалансированный BST по заданным ключам
  5. Определить, является ли заданное бинарное дерево BST или нет
  6. Проверить, представляют ли заданные ключи одинаковые BST или нет, не создавая BST
  7. Найти предшественника по порядку для данного ключа в BST
  8. Найти наименьшего общего предка (LCA) двух узлов в двоичном дереве поиска
  9. Найти K-й наименьший и K-й наибольший элемент в BST
  10. Пол и потолок в бинарном дереве поиска
  11. Найти оптимальную стоимость построения бинарного дерева поиска
  12. Преобразуйте двоичное дерево в BST, сохранив его исходную структуру
  13. Удалить из BST узлы, ключи которых находятся за пределами допустимого диапазона
  14. Найти пару с заданной суммой в BST
  15. Найти преемника по порядку для данного ключа в BST
  16. Заменить каждый элемент массива наименьшим большим элементом справа от него
  17. Исправить бинарное дерево, которое находится всего в одном обмене от превращения в BST
  18. Обновить каждый ключ в BST, чтобы он содержал сумму всех больших ключей
  19. Проверить, представляет ли данная последовательность обход BST в прямом порядке
  20. Построение бинарного дерева поиска из последовательности в обратном порядке
  21. Построить бинарное дерево поиска из последовательности предварительного заказа
  22. Найти тройку с заданной суммой в BST
  23. Подсчитать поддеревья в BST, узлы которых лежат в заданном диапазоне
  24. Объединить два BST в двусвязный список в отсортированном порядке
  25. Построить сбалансированный по высоте BST из неуравновешенного BST
  26. Найти размер наибольшего BST в бинарном дереве
  27. Преобразование двоичного дерева поиска в минимальную кучу

Разделяй и властвуй

  1. Бинарный поиск
  2. Найти число оборотов в циклически отсортированном массиве
  3. Поиск элемента в круговом отсортированном массиве
  4. Найти первое или последнее вхождение заданного числа в отсортированном массиве
  5. Подсчет вхождений числа в отсортированном массиве с дубликатами
  6. Найти наименьший недостающий элемент в отсортированном массиве
  7. Найти пол и потолок числа в отсортированном массиве
  8. Поиск в почти отсортированном массиве за время O(log(n))
  9. Найти количество единиц в отсортированном двоичном массиве
  10. Найти пиковый элемент в массиве
  11. Максимальный подмассив суммы с помощью Divide & Conquer
  12. Найти минимальный и максимальный элемент в массиве, используя минимальные сравнения
  13. Эффективно реализовать силовую функцию | Рекурсивный и итеративный
  14. Найти пропущенный член в последовательности за лог(n) раз
  15. Деление двух чисел с использованием алгоритма двоичного поиска
  16. Найти пол и потолок числа в отсортированном массиве (Рекурсивное решение)
  17. Найти минимальный и максимальный элемент в массиве, выполнив минимальное сравнение
  18. Найти частоту каждого элемента в отсортированном массиве, содержащем дубликаты
  19. Тернарный поиск против бинарного поиска
  20. Экспоненциальный поиск
  21. Интерполяционный поиск
  22. Алгоритм сортировки слиянием
  23. Алгоритм итеративной сортировки слиянием (сортировка слиянием снизу вверх)
  24. Алгоритм сортировки слиянием для односвязного списка
  25. Сортировка двусвязного списка с помощью сортировки слиянием
  26. Объединить K отсортированных связанных списков
  27. Счетчик инверсии массива
  28. Алгоритм быстрой сортировки
  29. Итеративное внедрение быстрой сортировки
  30. Гибридная быстрая сортировка
  31. Быстрая сортировка с использованием алгоритма голландского национального флага
  32. Быстрая сортировка по схеме разбиения Хоара
  33. Разделение положительных и отрицательных целых чисел с помощью сортировки слиянием

Динамическое программирование

  1. Введение в динамическое программирование
  2. Самая длинная общая подпоследовательность | Введение и длина LCS
  3. Самая длинная общая подпоследовательность | Космическая оптимизированная версия
  4. Самая длинная общая подпоследовательность K-последовательностей
  5. Самая длинная общая подпоследовательность | Поиск всех LCS
  6. Самая длинная общая подстрока
  7. Самая длинная палиндромная последовательность с использованием динамического программирования
  8. Задача на самую длинную повторяющуюся подпоследовательность
  9. Внедрение утилиты Diff
  10. Кратчайшая общая суперпоследовательность | Введение и длина SCS
  11. Кратчайшая общая суперпоследовательность | Нахождение всех СКС
  12. Кратчайшая общая суперпоследовательность | Использование ЛКС
  13. Самая длинная возрастающая подпоследовательность с использованием динамического программирования
  14. Самая длинная битоническая последовательность
  15. Увеличение подпоследовательности с максимальной суммой
  16. Задача о расстоянии Левенштейна (расстоянии редактирования)
  17. Найти размер наибольшей квадратной подматрицы из единиц, присутствующих в данной бинарной матрице
  18. Матричное умножение цепочек
  19. Найти минимальную стоимость достижения последней ячейки матрицы из ее первой ячейки
  20. Найти самую длинную последовательность, образованную соседними числами в матрице
  21. Подсчитать количество путей в матрице с заданной стоимостью достижения ячейки назначения
  22. 0–1 задача о рюкзаке
  23. Максимизировать значение выражения
  24. Проблема раздела
  25. Задача суммы подмножества
  26. Задача о разделе минимальной суммы
  27. Найти все N-значные двоичные строки без последовательных единиц
  28. Розовая резка
  29. Максимальная резка стержня продукта
  30. Задача на размен монет (неограниченный запас монет)
  31. Задача на размен монет. Найдите общее количество способов получить номинал монет
  32. Все возможные решения линейного уравнения от k переменных
  33. Самая длинная чередующаяся подпоследовательность
  34. Подсчитать, сколько раз шаблон появляется в данной строке как подпоследовательность
  35. Набрать максимальное количество точек в матрице, удовлетворяя заданным ограничениям
  36. Посчитайте все возможные комбинации N-значных чисел в клавиатуре мобильного телефона
  37. Найти оптимальную стоимость построения бинарного дерева поиска
  38. Проблема с разрывом слов
  39. Проблема разрыва слов | Использование структуры данных Trie
  40. Определить минимальную стоимость настройки массива
  41. Проверить, является ли строка К-палиндромом или нет
  42. Найти все способы получить заданную сумму за n бросков игральных костей с k гранями
  43. Сопоставление шаблона с подстановочными знаками
  44. Найдите количество способов заполнить матрицу N x 4 плитками 1 x 4
  45. Способы добраться до нижнего правого угла матрицы ровно за k ходов
  46. Задача взвешенного интервального планирования
  47. Задача укладки коробок
  48. Найти общее количество способов подняться на n-ю ступеньку не более чем за m шагов
  49. Найти общее количество способов подняться на n-ю ступеньку снизу
  50. Задача выбора деятельности с использованием динамического программирования
  51. Найти минимальное количество удалений, необходимых для преобразования строки в палиндром
  52. Рассчитать минимальную стоимость доставки из исходного города в город назначения
  53. Взвешенное интервальное планирование — решение для динамического программирования
  54. Найти минимальное количество прыжков, необходимое для достижения пункта назначения
  55. Найти вероятность того, что человек останется жив, сделав N шагов по острову
  56. Вычислить сумму всех элементов подматрицы за постоянное время
  57. Найти подматрицу максимальной суммы K x K в заданной матрице M x N
  58. Найти подматрицу максимальной суммы, присутствующую в заданной матрице
  59. Найти максимальную сумму подпоследовательности без соседних элементов
  60. Задача на максимальный подмассив (алгоритм Кадане)
  61. Кратчайшие пути из одного источника — алгоритм Беллмана Форда
  62. Кратчайшие пути для всех пар — алгоритм Флойда Уоршелла
  63. Задача на самую длинную убывающую последовательность
  64. Игра Pots of Gold с использованием динамического программирования
  65. Найти минимальные разрезы, необходимые для палиндромного разбиения строки
  66. Последовательность змей максимальной длины
  67. Проблема 3-х разделов
  68. Рассчитать размер наибольшего плюса 1 в двоичной матрице
  69. Проверить, является ли данная строка чередованием двух других заданных строк
  70. Самая длинная возрастающая подпоследовательность с использованием LCS
  71. Определить цикл отрицательного веса в графе
  72. Задача на самый длинный чередующийся подмассив

График

  1. Терминология и представления графов
  2. Реализация графа с использованием STL
  3. Реализация графа на C++ без использования STL
  4. Реализация графа на C
  5. Реализация графа в Java с использованием коллекций
  6. Поиск в ширину (BFS) | Итеративная и рекурсивная реализация
  7. Поиск в глубину (DFS) | Итеративная и рекурсивная реализация
  8. Время прихода и ухода вершин в DFS
  9. Типы ребер, участвующих в DFS, и связь между ними
  10. Двудольный граф
  11. Определить, является ли данный граф двудольным графом, используя DFS
  12. Минимальное количество бросков, необходимое для победы в игре «Змейка и лестница»
  13. Топологическая сортировка в DAG
  14. Алгоритм топологической сортировки Кана
  15. Транзитивное замыкание графа
  16. Проверить, содержит ли неориентированный граф цикл или нет
  17. Всего путей в заданном орграфе от заданного источника до пункта назначения, имеющих ровно m ребер
  18. Определить, является ли неориентированный граф деревом (ациклическим связным графом)
  19. 2-Edge Connectivity в графе
  20. 2-вершинная связность в графе
  21. Проверить, является ли данный орграф DAG (направленным ациклическим графом) или нет
  22. Структура данных непересекающихся множеств (алгоритм объединения-поиска)
  23. Задача о шахматном коне — найти кратчайший путь от источника к месту назначения
  24. Проверить, является ли данный граф сильно связанным или нет
  25. Проверить, является ли данный граф сильно связанным или не использует один обход DFS
  26. Алгоритм Union-Find для обнаружения циклов в неориентированном графе
  27. Алгоритм Крускала для нахождения минимального остовного дерева
  28. Кратчайшие пути из одного источника — алгоритм Дейкстры
  29. Кратчайшие пути из одного источника — алгоритм Беллмана Форда
  30. Кратчайшие пути для всех пар — алгоритм Флойда Уоршелла
  31. Найти стоимость кратчайшего пути в DAG с помощью одного прохода Беллмана-Форда
  32. Путь с наименьшей стоимостью во взвешенном орграфе с использованием BFS
  33. Найти путь максимальной стоимости в графе от заданного источника до пункта назначения
  34. Определить цикл отрицательного веса в графе
  35. Путь с наименьшей стоимостью в заданном орграфе от заданного источника до пункта назначения, имеющий ровно m ребер
  36. Найти путь между заданными вершинами в ориентированном графе
  37. Найти все возможные топологические порядки DAG
  38. Найди правильный порядок алфавитов в данном словаре древнего происхождения
  39. Найти самый длинный путь в направленном ациклическом графе (DAG)
  40. Вывести все k-раскрашиваемые конфигурации графа (Раскраска вершин графа)
  41. Вывести все гамильтоновы пути, присутствующие в графе
  42. Жадная раскраска графа
  43. Поиск в глубину (DFS) против поиска в ширину (BFS)

куча

  1. Введение в приоритетные очереди с использованием двоичных куч
  2. Реализация минимальной и максимальной кучи на C++
  3. Реализация минимальной и максимальной кучи в Java
  4. Алгоритм сортировки кучей
  5. Проверить, представляет ли данный массив минимальную кучу или нет
  6. Преобразовать максимальную кучу в минимальную кучу за линейное время
  7. Найти K-й самый большой элемент в массиве
  8. Сортировка K-сортированного массива
  9. Объединить M отсортированных списков переменной длины
  10. Объединить K отсортированных связанных списков
  11. Найти K-й наименьший элемент в массиве
  12. Найти наименьший диапазон, содержащий хотя бы один элемент из каждого из заданных списков
  13. Объединить M отсортированных списков, каждый из которых содержит N элементов
  14. Внешняя сортировка слиянием
  15. Кодирование Хаффмана
  16. Найти первые k максимальных слов в заданном наборе строк
  17. Найти первые k неповторяющихся символов в строке за один проход
  18. Реализация структуры данных Treap (вставка, поиск и удаление)
  19. Преобразование двоичного дерева поиска в минимальную кучу
  20. Проверить, является ли бинарное дерево min-heap или нет

Связанный список

  1. Введение в связанные списки
  2. Реализация связанного списка | Часть 1
  3. «Реализация связанного списка | Часть 2"
  4. Статический связанный список на C
  5. Клонировать данный связанный список
  6. Удалить связанный список
  7. Операция всплывающего окна в связанном списке
  8. Вставить данный узел в правильную отсортированную позицию в данном отсортированном связанном списке
  9. Учитывая связанный список, измените его так, чтобы он был отсортирован
  10. Разделить узлы данного связанного списка на переднюю и заднюю половины
  11. Удалить дубликаты из отсортированного связанного списка
  12. Переместить передний узел данного списка в начало другого списка
  13. Переместить четные узлы в конец списка в обратном порядке
  14. Разбить заданный связанный список на два списка, где каждый список содержит чередующиеся элементы из него
  15. Построить связанный список путем слияния альтернативных узлов двух заданных списков
  16. Алгоритм сортировки слиянием для односвязного списка
  17. Объединить два отсортированных связанных списка в один
  18. Объединить K отсортированных связанных списков
  19. Пересечение двух заданных отсортированных связанных списков
  20. Обратно связанный список | Часть 1 (Итеративное решение)
  21. Обратно связанный список | Часть 2 (Рекурсивное решение)
  22. Обратить каждую группу из k узлов в заданном связанном списке
  23. Найти K-й узел с конца в связанном списке
  24. Объединить альтернативные узлы двух связанных списков в первый список
  25. Объединить два отсортированных связанных списка с конца
  26. Удалить каждые N узлов в связанном списке после пропуска M узлов
  27. Переупорядочить связанный список определенным образом за линейное время
  28. Проверить, является ли связанный список палиндромом или нет
  29. Переместить последний узел вперед в заданном связанном списке
  30. Переупорядочить связанный список особым образом
  31. Обнаружение цикла в связанном списке (алгоритм обнаружения цикла Флойда)
  32. Сортировать связанный список, содержащий 0, 1 и 2
  33. Реализация стека с использованием связанного списка
  34. Реализация очереди с использованием связанного списка
  35. Удалить дубликаты из связанного списка
  36. Перестройте связанный список так, чтобы в нем чередовались высокие и низкие значения
  37. Изменение связанного списка путем отделения нечетных узлов от четных
  38. Вычислить высоту бинарного дерева с листовыми узлами, образующими круговой двусвязный список
  39. Связанный список XOR: обзор и реализация
  40. Преобразование многоуровневого связанного списка в односвязный список
  41. Рекурсивно проверить, является ли связанный список символов палиндромом или нет
  42. Объединить два BST в двусвязный список в отсортированном порядке
  43. Удалить лишние узлы из пути, образованного связным списком
  44. Добавить однозначное число в связанный список, представляющий число
  45. Обратить каждую альтернативную группу из k узлов в связанном списке
  46. Определить, является ли данный связанный список палиндромом или нет
  47. Сортировка двусвязного списка с помощью сортировки слиянием
  48. Обратить двусвязный список
  49. Попарно поменять местами соседние узлы связанного списка
  50. Сгладить связанный список
  51. Проверить, является ли связанный список строк палиндромным
  52. Свести многоуровневый связанный список
  53. Построить сбалансированный по высоте BST из неуравновешенного BST
  54. Поменять местами K-й узел с начала на K-й узел с конца в связанном списке
  55. Добавить два связанных списка без использования дополнительного места
  56. Клонирование связанного списка со случайными указателями
  57. Обновить случайный указатель для каждого узла связанного списка, чтобы он указывал на максимальный узел
  58. Узлы связи представлены на каждом уровне бинарного дерева в виде связанного списка
  59. Преобразование троичного дерева в двусвязный список
  60. Вывести узлы заданного бинарного дерева в вертикальном порядке
  61. Преобразовать бинарное дерево в двусвязный список по спирали

Матрица

  1. Матрица печати в спиральном порядке
  2. Создать спиральную матрицу из заданного массива
  3. Сдвинуть все элементы матрицы на 1 в порядке спирали
  4. Найти кратчайший путь от источника к месту назначения в матрице, удовлетворяющей заданным ограничениям
  5. Заменить все элементы строки i и столбца j в матрице на 0, если ячейка (i, j) имеет значение 0
  6. Выведите диагональные элементы матрицы, имеющие положительный наклон
  7. Найти все пути от первой до последней ячейки матрицы
  8. Заменить все вхождения 0, которые не окружены 1 в двоичной матрице
  9. На месте повернуть матрицу на 90 градусов по часовой стрелке
  10. Подсчет отрицательных элементов, присутствующих в отсортированной матрице, за линейное время
  11. Отчет обо всех вхождениях элемента в матрицу, отсортированную по строкам и столбцам, за линейное время
  12. Вычислить сумму всех элементов подматрицы за постоянное время
  13. Найти подматрицу максимальной суммы K x K в заданной матрице M x N
  14. Найти подматрицу максимальной суммы, присутствующую в заданной матрице
  15. Найти вероятность того, что человек останется жив, сделав N шагов по острову
  16. Сосчитай количество островов
  17. Алгоритм заливки
  18. Найти кратчайший безопасный маршрут в поле с датчиками
  19. Найти все вхождения заданной строки в матрицу символов
  20. Кратчайший путь в лабиринте | Алгоритм Ли
  21. Проверить, является ли данная матрица матрицей Теплица или нет
  22. На месте повернуть матрицу на 180 градусов
  23. Заполнить бинарную матрицу чередующимися прямоугольниками из 0 и 1
  24. Найти все общие элементы, присутствующие в каждой строке данной матрицы
  25. Построить бинарное дерево из матрицы предков
  26. Найти общие элементы, присутствующие во всех строках матрицы
  27. Найти индекс строки, содержащей максимальное количество единиц в двоичной матрице
  28. Создать список возможных слов из матрицы символов
  29. Найди наибольшую квадратную подматрицу, окруженную всеми единицами
  30. Отсортировать массив с помощью таблицы Юнга
  31. Молодая картина | Вставить, найти, извлечь-минимум, удалить, заменить
  32. Найти минимальные проходы, необходимые для преобразования всех отрицательных значений в матрице
  33. Набрать максимальное количество точек в матрице, удовлетворяя заданным ограничениям
  34. Подсчитать количество путей в матрице с заданной стоимостью достижения ячейки назначения
  35. Найти самую длинную последовательность, образованную соседними числами в матрице
  36. Найти минимальную стоимость достижения последней ячейки матрицы из ее первой ячейки
  37. Способы добраться до нижнего правого угла матрицы ровно за k ходов
  38. Матричное умножение цепочек
  39. Найти размер наибольшей квадратной подматрицы из единиц, присутствующих в данной бинарной матрице
  40. Задача о шахматном коне — найти кратчайший путь от источника к месту назначения
  41. Найти повторяющиеся строки в бинарной матрице
  42. Выведите все возможные решения задачи N ферзей
  43. Выведите все возможные ходы коня на шахматной доске
  44. Найди кратчайший путь в лабиринте
  45. Найти максимально длинный маршрут в матрице
  46. Найти общее количество уникальных путей в лабиринте от источника к месту назначения
  47. Рассчитать размер наибольшего плюса 1 в двоичной матрице
  48. Найти максимальное значение M[c][d] — M[a][b] по всем вариантам индексов
  49. Найти кратчайшее расстояние каждой клетки от мины в лабиринте
  50. Найти кратчайший путь в устройстве для построения заданной строки
  51. Задача коммивояжера с использованием ветвей и границ
  52. Рассчитать минимальную стоимость доставки из исходного города в город назначения

Очередь

  1. Реализация очереди
  2. Реализация очереди с использованием связанного списка
  3. Реализовать стек с использованием структуры данных очереди
  4. Реализовать очередь, используя структуру данных стека
  5. Эффективно вывести все узлы между двумя заданными уровнями в бинарном дереве
  6. Задача о шахматном коне — найти кратчайший путь от источника к месту назначения
  7. Кратчайший путь в лабиринте | Алгоритм Ли
  8. Найти кратчайший безопасный маршрут в поле с датчиками
  9. Алгоритм заливки
  10. Сосчитай количество островов
  11. Найти кратчайший путь от источника к месту назначения в матрице, удовлетворяющей заданным ограничениям
  12. Генерировать двоичные числа от 1 до N
  13. Вычислить высоту бинарного дерева | Итеративный и рекурсивный
  14. Удалить заданное бинарное дерево | Итеративный и рекурсивный
  15. Уровневый обход бинарного дерева
  16. Спиральный обход бинарного дерева
  17. Обход двоичного дерева в обратном порядке
  18. Вывести все узлы заданного бинарного дерева в определенном порядке
  19. Печатать левое представление бинарного дерева
  20. Найти следующий узел на том же уровне для данного узла в бинарном дереве
  21. Проверить, является ли заданное бинарное дерево полным бинарным деревом или нет
  22. Печать диагонального обхода бинарного дерева
  23. Вывести угловые узлы каждого уровня бинарного дерева
  24. Инвертировать заданное бинарное дерево | Рекурсивное и итеративное решение
  25. Найти минимальные проходы, необходимые для преобразования всех отрицательных значений в матрице
  26. Преобразовать бинарное дерево в двусвязный список по спирали
  27. Проверить, является ли бинарное дерево min-heap или нет
  28. Инвертировать альтернативные уровни совершенного бинарного дерева
  29. Преобразование двоичного дерева поиска в минимальную кучу
  30. Минимальное количество бросков, необходимое для победы в игре «Змейка и лестница»
  31. Найти кратчайшее расстояние каждой клетки от мины в лабиринте
  32. Преобразование многоуровневого связанного списка в односвязный список
  33. Поиск в ширину (BFS) | Итеративная и рекурсивная реализация
  34. Проверить, содержит ли неориентированный граф цикл или нет
  35. Найти путь максимальной стоимости в графе от заданного источника до пункта назначения
  36. Общее количество путей в заданном орграфе от заданного источника до пункта назначения, имеющих ровно m ребер
  37. Путь с наименьшей стоимостью в заданном орграфе от заданного источника до пункта назначения, имеющий ровно m ребер

Сортировка

  1. Сортировка вставками | Итеративный и рекурсивный
  2. Сортировка выбором | Итеративный и рекурсивный
  3. Пузырьковая сортировка | Итеративный и рекурсивный
  4. Алгоритм сортировки слиянием
  5. Алгоритм итеративной сортировки слиянием (сортировка слиянием снизу вверх)
  6. Алгоритм быстрой сортировки
  7. Итеративное внедрение быстрой сортировки
  8. Гибридная быстрая сортировка
  9. Быстрая сортировка с использованием алгоритма голландского национального флага
  10. Быстрая сортировка по схеме разбиения Хоара
  11. Внешняя сортировка слиянием
  12. Алгоритм сортировки подсчетом
  13. Пользовательская сортировка | Сортировать элементы по их частоте и индексу
  14. Пользовательская сортировка | Отсортировать элементы массива по порядку элементов, заданному вторым массивом
  15. Счетчик инверсии массива
  16. Разделение положительных и отрицательных целых чисел за линейное время
  17. Эффективная сортировка массива с большим количеством повторяющихся значений
  18. Отсортировать массив с помощью таблицы Юнга
  19. Проблемы, решаемые с помощью логики секционирования быстрой сортировки
  20. Найти наименьшее окно в сортировке массива, при котором будет отсортирован весь массив
  21. Найти наибольшее возможное число из множества заданных чисел
  22. Переместить все нули, присутствующие в массиве, в конец
  23. Сортировка бинарного массива за линейное время
  24. Сортировать связанный список, содержащий 0, 1 и 2
  25. Алгоритм сортировки слиянием для односвязного списка
  26. Сортировка двусвязного списка с помощью сортировки слиянием
  27. Группировать анаграммы вместе из заданного списка слов
  28. Проблема выбора деятельности
  29. Лексикографическая сортировка заданного набора ключей
  30. Алгоритм сортировки кучей
  31. Объединить M отсортированных списков переменной длины
  32. Объединить M отсортированных списков, каждый из которых содержит N элементов
  33. Найти все палиндромные перестановки строки
  34. Найти все лексикографически следующие перестановки строки, отсортированные по возрастанию
  35. Объединить два отсортированных связанных списка с конца
  36. Отсортировать массив, содержащий 0, 1 и 2 (задача о голландском национальном флаге)
  37. Найти пару с заданной суммой в массиве
  38. На месте объединить два отсортированных массива
  39. Объединить два массива, удовлетворяя заданным ограничениям
  40. Найти максимальное произведение двух целых чисел в массиве
  41. Найти все различные комбинации заданной длины
  42. Найти все различные комбинации заданной длины с допустимым повторением
  43. Объединение перекрывающихся интервалов
  44. Выведите все четверки с заданной суммой | расширенная задача о 4 суммах
  45. Задача на 4 суммы | Четверки с заданной суммой
  46. Найти два числа с максимальной суммой, образованной цифрами массива
  47. Найди тройку с максимальным произведением в массиве
  48. Найти минимальное произведение среди всех комбинаций триплетов в массиве
  49. Найти все различные комбинации заданной длины — Часть 2
  50. Найти количество превосходящих элементов для каждого элемента массива
  51. Разделение положительных и отрицательных целых чисел с помощью сортировки слиянием

Куча

  1. Реализация стека
  2. Реализация стека с использованием связанного списка
  3. Проверить, является ли данное выражение сбалансированным выражением или нет
  4. Найти повторяющиеся скобки в выражении
  5. Вычислить заданное постфиксное выражение
  6. Расшифруйте заданную последовательность, чтобы построить минимальное число без повторяющихся цифр
  7. Разработайте стек, который возвращает минимальный элемент за постоянное время
  8. Разработайте стек, который возвращает минимальный элемент без использования вспомогательного стека
  9. Перевернуть строку без использования рекурсии
  10. Реализовать стек с использованием структуры данных очереди
  11. Реализовать очередь, используя структуру данных стека
  12. Реализовать два стека в одном массиве
  13. Рекурсивное решение для сортировки стека
  14. Перевернуть строку, используя стековую структуру данных
  15. Найти в массиве все элементы, которые больше, чем все элементы справа от них
  16. Обход дерева по порядку | Итеративный и рекурсивный
  17. Предзаказ обхода дерева | Итеративный и рекурсивный
  18. Обход дерева пост-заказов | Итеративный и рекурсивный
  19. Найти прямой обход бинарного дерева по его прямому и обратному порядку
  20. Найти предков данного узла в бинарном дереве
  21. Проверить, идентичны ли два заданных бинарных дерева | Итеративный и рекурсивный
  22. Обход двоичного дерева в обратном порядке
  23. Обратить заданный текст, не меняя местами отдельные слова
  24. Найти все бинарные строки, которые можно составить из заданного шаблона подстановочных знаков
  25. Итеративное внедрение быстрой сортировки
  26. Поиск в глубину (DFS) | Итеративная и рекурсивная реализация
  27. Инвертировать заданное бинарное дерево | Рекурсивное и итеративное решение
  28. Вывести путь от листа к корню для каждого листа в бинарном дереве
  29. Самая длинная возрастающая последовательность
  30. Инвертировать альтернативные уровни совершенного бинарного дерева

Нить

  1. Проверить, является ли заданная строка повернутым палиндромом или нет
  2. Самая длинная палиндромная подстрока (оптимизированное пространство без DP)
  3. Проверить, есть ли в строке повторяющаяся подпоследовательность
  4. Проверить, можно ли получить строки друг из друга, вращая их по кругу
  5. Проверить, является ли данный набор ходов круговым или нет
  6. Преобразовать данное число в соответствующее имя столбца Excel
  7. Определить, являются ли две строки анаграммой или нет
  8. Найти все бинарные строки, которые можно составить из заданного шаблона подстановочных знаков
  9. Найти все чередования заданных строк
  10. Изоморфные струны
  11. Найти все возможные палиндромные подстроки в строке
  12. Найти все возможные сочетания слов, образованные с клавиатуры мобильного телефона
  13. Найти все возможные комбинации, заменив заданные цифры символами из соответствующего списка
  14. Найти все слова из данного списка, которые следуют тому же порядку символов, что и заданный шаблон
  15. Найти первые k неповторяющихся символов в строке за один проход
  16. Группировать анаграммы вместе из заданного списка слов
  17. Введение в сопоставление с образцом
  18. На месте удалите все вхождения «AB и C из строки»
  19. Самая длинная подстрока палиндромной суммы четной длины
  20. Вывести строку зигзагом в k строк
  21. Обратить заданный текст, не меняя местами отдельные слова
  22. Алгоритм сжатия данных Run Length Encoding (RLE)
  23. Подтвердить IP-адрес
  24. Найти самую длинную подстроку заданной строки, содержащую k различных символов
  25. Найти все палиндромные перестановки строки
  26. Найти все подстроки строки, являющиеся перестановкой данной строки
  27. Найти самую длинную подстроку заданной строки, содержащую все различные символы
  28. Найти все перестановки заданной строки
  29. Итеративный подход к поиску перестановок строки
  30. Создать все перестановки строки в Java | Рекурсивный и итеративный
  31. Найти все лексикографически следующие перестановки строки, отсортированные по возрастанию
  32. Найти лексикографически минимальное вращение строки
  33. Найти все строки заданной длины, содержащие сбалансированные скобки
  34. Найти все N-значные строго возрастающие числа (подход снизу вверх и сверху вниз)
  35. Найти все N-значные двоичные числа, в которых единиц больше, чем нулей для любого префикса
  36. Найти все N-значные числа с заданной суммой цифр
  37. Найти все N-значные двоичные числа с набором k битов, где k находится в диапазоне от 1 до N
  38. Генерировать двоичные числа от 1 до N
  39. Найти все комбинации непересекающихся подстрок строки
  40. Проверить, является ли данное предложение синтаксически правильным или нет
  41. Вычислить ранг заданной строки среди всех ее лексикографически отсортированных перестановок
  42. Найти все лексикографические перестановки строки
  43. Найти все N-значные двоичные числа с одинаковой суммой битов в двух его половинах
  44. Проверить, является ли данная строка чередованием двух других заданных строк
  45. Разница между подмассивом, подпоследовательностью и подмножеством
  46. std::next_permutation | Обзор и реализация на C++
  47. std::prev_permutation | Обзор и реализация на C++
  48. Реализация алгоритма KMP
  49. Обратить строку без использования рекурсии
  50. Обратить заданную строку с помощью рекурсии
  51. Определить, является ли заданная строка палиндромом или нет
  52. На месте удалить все соседние дубликаты из данной строки
  53. Найдите минимальное количество инверсий, необходимое для того, чтобы данное выражение стало уравновешенным
  54. Заменить все непересекающиеся вхождения шаблона
  55. Построить самый длинный палиндром, перетасовав или удалив символы из строки
  56. Определить, следуют ли символы строки в указанном порядке или нет
  57. Выведите все комбинации словосочетаний, которые можно составить, выбирая слова из каждого из заданных списков
  58. Удалить все лишние пробелы из строки
  59. Разбить строку на все возможные комбинации непересекающихся подстрок
  60. Удалить соседние повторяющиеся символы из строки
  61. Найти первый неповторяющийся символ в строке, выполнив только один ее обход
  62. Найти все N-значные числа с одинаковой суммой цифр в четном и нечетном индексе
  63. Найти все лексикографически предыдущие перестановки строки, отсортированные по убыванию
  64. Сочетания слов, образованные заменой данных цифр соответствующими алфавитами
  65. Проблема с разрывом слов
  66. Сопоставление шаблона с подстановочными знаками
  67. Подсчитать, сколько раз шаблон появляется в данной строке как подпоследовательность
  68. Задача о расстоянии Левенштейна (расстоянии редактирования)
  69. Самая длинная общая подпоследовательность | Введение и длина LCS
  70. Самая длинная общая подпоследовательность | Космическая оптимизированная версия
  71. Самая длинная общая подпоследовательность K-последовательностей
  72. Самая длинная общая подпоследовательность | Поиск всех LCS
  73. Задача на самую длинную повторяющуюся подпоследовательность
  74. Самая длинная палиндромная последовательность с использованием динамического программирования
  75. Самая длинная общая подстрока
  76. Кратчайшая общая суперпоследовательность | Введение и длина SCS
  77. Кратчайшая общая суперпоследовательность | Нахождение всех СКС
  78. Кратчайшая общая суперпоследовательность | Использование ЛКС
  79. Внедрение утилиты Diff
  80. Проблема разрыва слов | Использование структуры данных Trie
  81. Найти минимальные разрезы, необходимые для палиндромного разбиения строки
  82. Проверить, является ли строка К-палиндромом или нет
  83. Найти кратчайший путь в устройстве для построения заданной строки
  84. Найти минимально возможное число, сделав не более K свопов
  85. Определить, совпадает ли шаблон со строкой или нет
  86. Найди правильный порядок алфавитов в данном словаре древнего происхождения
  87. Найти минимальное количество удалений, необходимых для преобразования строки в палиндром

попробовать

  1. Пробная реализация | Вставить, найти и удалить
  2. Реализация Trie с эффективным использованием памяти с использованием Map | Вставить, найти и удалить
  3. Реализация структуры данных Trie на C++
  4. Самый длинный общий префикс в заданном наборе строк (с использованием Trie)
  5. Лексикографическая сортировка заданного набора ключей
  6. Найти максимальное встречающееся слово в заданном наборе строк
  7. Найти первые k максимальных слов в заданном наборе строк
  8. Найти повторяющиеся строки в бинарной матрице
  9. Проблема разрыва слов | Использование структуры данных Trie
  10. Создать список возможных слов из матрицы символов

Жадный

  1. Проблема выбора деятельности
  2. Кодирование Хаффмана
  3. Проблема последовательности работ со сроками
  4. Жадная раскраска графа
  5. Алгоритм Крускала для нахождения минимального остовного дерева
  6. Кратчайшие пути из одного источника — алгоритм Дейкстры
  7. Задача о кратчайшей суперструне

Загадки

  1. Задача угла часов — Найдите угол между часовой и минутной стрелками
  2. Добавить два числа без использования оператора сложения
  3. Создать набор мощности заданного набора
  4. Реализовать степенную функцию без использования операторов умножения и деления
  5. Вывести все числа от 1 до N без точки с запятой
  6. Поменять местами два числа без использования третьей переменной
  7. Определить условие if для печати определенного вывода
  8. Найти максимум, минимум три числа без использования условного оператора и тернарного оператора
  9. Найти числа, представленные в виде суммы двух кубов для двух разных пар
  10. Напечатать «Hello World с пустой функцией main()»
  11. Проблема Ханойской башни
  12. Вывести все числа от 1 до N без использования цикла
  13. Напечатать точку с запятой без использования точки с запятой в программе
  14. Умножение двух чисел без использования оператора умножения или циклов
  15. Найти квадрат числа без использования оператора умножения и деления
  16. Определить, является ли число четным или нечетным без использования условного оператора
  17. Установить оба элемента бинарного массива равными 0 в одной строке
  18. Найти минимальное число без использования условного оператора или тернарного оператора
  19. Выполнить деление двух чисел без использования оператора деления (/)
  20. Сгенерировать 0 и 1 с вероятностью 75% и 25%
  21. Генерировать желаемые случайные числа с равной вероятностью
  22. Вернуть 0, 1 и 2 с равной вероятностью, используя указанную функцию
  23. Получите честные результаты от предвзятой монеты
  24. Сгенерировать числа от 1 до 7 с равной вероятностью, используя указанную функцию
  25. Реализовать тернарный оператор без использования условных выражений
  26. Определить, равны ли два целых числа без использования операций сравнения и арифметических операций
  27. Вернуть 0 и 1 с равной вероятностью, используя указанную функцию
  28. Сгенерировать случайный ввод из массива в соответствии с заданными вероятностями
  29. Получите честные результаты от предвзятой монеты
  30. Магнитный пазл