Я просто хочу пройти алгоритмический собес 🥺
- KMP — поиск подстроки в строке за O(m + n). Встретился в 28. Брутфорс ушёл в TL. Алгос списал с псевдокода на вики: Knuth–Morris–Pratt algorithm.
- Prefix sum — быстрый ответ на множество вопросов "Какая сумма на подмассиве от L до R?" (
pref[0] = a[0]; pref[i] = pref[i - 1] + a[i]. Q: pref[r] - pref[l - 1] или pref[r] если l == 0
). Точ в точ задача 303. Интересное и легкое усложнение задачи в 724. - Kadane's algorithm — подмассив с наибольшей суммой (
tSum += a[i]; tSum = max(tSum, a[i]); res = max(res, tSum)
).
- Maximum subarray problem (Kadane's algorithm). LeetCode 53
- Sliding Window Technique
- Префиксные суммы. XOR. Задачи на запросы
- Полное бинарное дерево. Куча. Очередь с приоритетом
- Hamming weight. LeetCode 191
- Custom impl of
__builtin_popcount
- Hamming distance
- How to count leading zeros in integer (
__builtin_clz
and pure impls)
- Четыре задачи на два указателя
- Алгоритм Кнута-Морриса-Пратта
- Динамическое программирование это просто
- Задача о рюкзаке. Динамическое программирование
- Прямая и обратная польская нотация
- Популярная в собеседованиях гугл задача. Разбор и решение (Guess the word 843 на LeetCode)
- Хитрая задача на Стек
- Поиск Знаменитости. Метод двух указателей
- Динамическое Программирование: Количество Уникальных Путей
- What is Bitmasking
- Bitwise Operations tutorial #1 | XOR, Shift, Subsets
- Плейлист АиСД year2020 s1
- Что такое sliding window: Solve subarray problems FASTER (using Sliding Windows)
- Что такое dynamic programming: Mastering Dynamic Programming - How to solve any interview problem (Part 1)
- Linked List Cycle - Floyd's Tortoise and Hare
- Найти позицию начала цикла (
len(head -> cycle_start) == len(equal_pointers -> cycle_start)
) Floyd's Cycle Detection - How Dijkstra's Algorithm Works