Longest Increasing Path in a Matrix

Найти наибольший возрастающий путь в матрице чисел. Привет обход в глубину и динамическое программирование для оптимизации 👋

Ones and Zeroes

Найти подмножество строк максимальной длины, которые удовлетворяют определённому условию. Нужно больше динамического программирования богу динамического программирования! Задача из Апрельского челенджа на LeetCode.

Validate Binary Search Tree

Определить является ли указанное дерево двоичным деревом поиска. Хорошая задача на рекурсию и деревья, разберём два решения.

Concatenated Words

Из списка слов нужно найти такие, которые могут быть составлены конкатенацией других слов. Поговорим подробнее про префиксные деревья, которые помогают искать быстро подстроки, и после напишем DFS (поиск в глубину).

Maximum Profit in Job Scheduling

Определить порядок выполнения задач с максимальным профитом. Задача на динамическое программирование.

Concatenating Subarrays

Даны двумерный и обычный массивы чисел. Можно ли все отдельные массивы из двумерного найти в обычном массиве, так, чтобы не было пересечений? Хорошая задача на рекурсию.

Linked List Cycle

Разберем алгоритм с двумя указателями, который позволяет найти цикл без дополнительной памяти.

Peak Index in a Mountain Array

Найти «пик» в массиве. Хорошая задача с тривиальным решением и последующим развитием в бинарный поиск.

Combination Sum

Задача, с которой обычно начинают знакомство с бектрекингом. Найти все комбинации указанных чисел, которые в сумме дадут заданное число.

Letter Tile Possibilities

Найдем количество возможных непустых подпоследовательностей строки без повторений. Напишем решение через бектрекинг, и улучим его, избавившись от копирования строк.