Skip to content

Latest commit

 

History

59 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

📘 Освоение алгоритмов на Java

Решение задач с LeetCode для глубокого понимания структур данных и алгоритмов.
108 задач · 15 паттернов.


🧭 Мой подход

Я прохожу все задачи последовательно, по этапам.
На каждом этапе разбираю новые темы и структуры данных.

После завершения всего списка я начинаю новый круг — решаю все задачи заново, постепенно уменьшая количество подсказок.
Так я повторяю материал, пока паттерны не становятся естественными.


🎯 Почему именно эти 108 задач?

Этот список — не случайный набор. Он составлен на основе реальной статистики собеседований и проверен на практике.

Основано на данных

Анализ тысяч реальных интервью показывает, что:

  • 20 паттернов покрывают 94% всех задач на собеседованиях.
  • 10 паттернов покрывают 80% задач.
  • Большинство успешных кандидатов решают 75–150 качественных задач, а не 500 случайных.
  • Некоторые авторы утверждают, что 50 задач могут покрыть 90% интервью, но 108 дают полную картину.

Полный список паттернов в этом плане

Всего в плане 15 паттернов, которые покрывают все ключевые темы:

  1. Хеш-таблицы
  2. Два указателя
  3. Бинарный поиск
  4. Сортировка
  5. Связные списки
  6. Скользящее окно (Sliding Window)
  7. Стеки и очереди
  8. Деревья
  9. Куча (PriorityQueue)
  10. Жадные алгоритмы (Greedy)
  11. Графы (BFS/DFS, Union-Find, Dijkstra)
  12. Backtracking
  13. Динамическое программирование
  14. Префиксные суммы
  15. Битовые операции

Каждый этап в списке задач соответствует одному или нескольким из этих паттернов.

Самые частые паттерны на собеседованиях (для ориентира)

Паттерн Частота появления
Два указателя 23%
Динамическое программирование 18%
BFS/DFS (графы и деревья) 16%
Скользящее окно 14%
Бинарный поиск 12%
Хеш-таблицы основа большинства задач

Проверенный путь

План построен так, чтобы вести от простого к сложному:

  1. Освоить один паттерн через 8–12 задач.
  2. Научиться узнавать этот паттерн в разных условиях.
  3. Комбинировать несколько паттернов в одной задаче.

Этот подход даёт глубокое понимание, а не заучивание решений.


📚 Полный список задач

✅ Этап 1. Массивы + Хеш-таблицы (12 задач)

  1. Two Sum – Easy – HashMap
  2. Contains Duplicate – Easy – HashSet
  3. Valid Anagram – Easy – HashMap / int[26]
  4. Group Anagrams – Medium – HashMap + сортировка
  5. Longest Consecutive Sequence – Medium – HashSet
  6. Top K Frequent Elements – Medium – HashMap + bucket
  7. Product of Array Except Self – Medium – Prefix / suffix
  8. Valid Sudoku – Medium – HashSet для строк/колонок/блоков
  9. Best Time to Buy and Sell Stock – Easy – Отслеживание минимума
  10. Maximum Subarray – Medium – Kadane's algorithm
  11. Merge Intervals – Medium – Сортировка + слияние
  12. Insert Interval – Medium – Вставка + слияние

📘 Этап 2. Два указателя + Sliding Window (12 задач)

  1. Valid Palindrome – Easy – Два указателя
  2. Two Sum II – Medium – Два указателя
  3. 3Sum – Medium – Два указателя + дубликаты
  4. Container With Most Water – Medium – Жадные два указателя
  5. Trapping Rain Water – Hard – Два указателя / стек
  6. Move Zeroes – Easy – Read/Write pointers
  7. Remove Duplicates from Sorted Array – Easy – In-place два указателя
  8. Longest Substring Without Repeating – Medium – Sliding window
  9. Longest Repeating Character Replacement – Medium – Sliding window + freq
  10. Minimum Size Subarray Sum – Medium – Variable window
  11. Find All Anagrams in a String – Medium – Fixed window + HashMap
  12. Max Consecutive Ones III – Medium – Variable window с K заменами

📙 Этап 3. Бинарный поиск (8 задач)

  1. Binary Search – Easy – Классика
  2. Search a 2D Matrix – Medium – Бинарный поиск в матрице
  3. Search in Rotated Sorted Array – Medium – Поиск в сдвинутом массиве
  4. Search in Rotated Sorted Array II – Medium – С дубликатами
  5. Find Minimum in Rotated Sorted Array – Medium – Поиск минимума
  6. Koko Eating Bananas – Medium – Поиск по ответу
  7. Capacity To Ship Packages – Medium – Поиск по ответу
  8. Median of Two Sorted Arrays – Hard – Бинарный поиск на двух массивах

📕 Этап 4. Связные списки (8 задач)

  1. Reverse Linked List – Easy – Итеративный + рекурсивный реверс
  2. Merge Two Sorted Lists – Easy – Слияние
  3. Linked List Cycle – Easy – Fast & slow pointers
  4. Linked List Cycle II – Medium – Найти начало цикла
  5. Remove Nth Node From End – Medium – Два указателя с отступом
  6. Reorder List – Medium – Середина + реверс + слияние
  7. Merge k Sorted Lists – Hard – PriorityQueue
  8. Reverse Nodes in k‑Group – Hard – Реверс группами

📒 Этап 5. Стеки и очереди (8 задач)

  1. Valid Parentheses – Easy – Stack
  2. Min Stack – Medium – Stack с минимумом
  3. Evaluate Reverse Polish Notation – Medium – Стек для вычислений
  4. Generate Parentheses – Medium – Backtracking + стек
  5. Daily Temperatures – Medium – Монотонный стек
  6. Largest Rectangle in Histogram – Hard – Монотонный стек
  7. Sliding Window Maximum – Hard – Deque (монотонная очередь)
  8. Decode String – Medium – Стек для вложенных строк

🌳 Этап 6. Деревья (12 задач)

  1. Maximum Depth of Binary Tree – Easy – DFS / рекурсия
  2. Same Tree – Easy – Сравнение деревьев
  3. Invert Binary Tree – Easy – Рекурсия
  4. Binary Tree Level Order Traversal – Medium – BFS (очередь)
  5. Validate Binary Search Tree – Medium – Inorder или min/max
  6. Kth Smallest in BST – Medium – Inorder traversal
  7. Construct Binary Tree from Preorder/Inorder – Medium – Рекурсивное построение
  8. Binary Tree Maximum Path Sum – Hard – DFS + максимум пути
  9. Serialize and Deserialize Binary Tree – Hard – BFS/DFS + сериализация
  10. Lowest Common Ancestor – Medium – LCA
  11. Subtree of Another Tree – Easy – Проверка поддерева
  12. Diameter of Binary Tree – Easy – DFS + диаметр

⛰ Этап 7. Куча (Heap) и Greedy (8 задач)

  1. Kth Largest Element in an Array – Medium – Min-Heap / QuickSelect
  2. Kth Largest Element in a Stream – Easy – Min-Heap фиксированного размера
  3. Last Stone Weight – Easy – Max-Heap (PriorityQueue с reverse)
  4. K Closest Points to Origin – Medium – Min-Heap / Max-Heap
  5. Jump Game – Medium – Greedy
  6. Jump Game II – Medium – Greedy + BFS
  7. Task Scheduler – Medium – Greedy + Heap
  8. Meeting Rooms II – Medium – Heap / сортировка

🔗 Этап 8. Графы (12 задач)

  1. Number of Islands – Medium – DFS / BFS на матрице
  2. Max Area of Island – Medium – DFS / BFS
  3. Clone Graph – Medium – DFS / BFS + HashMap
  4. Course Schedule – Medium – Топологическая сортировка
  5. Course Schedule II – Medium – Топологическая сортировка
  6. Pacific Atlantic Water Flow – Medium – DFS с двух сторон
  7. Rotting Oranges – Medium – BFS (Multi-source)
  8. Word Ladder – Hard – BFS на графе слов
  9. Network Delay Time – Medium – Dijkstra
  10. Min Cost to Connect All Points – Medium – Union-Find / MST
  11. Number of Provinces – Medium – Union-Find / DFS
  12. Redundant Connection – Medium – Union-Find

🔙 Этап 9. Backtracking (8 задач)

  1. Subsets – Medium – Backtracking — основа
  2. Subsets II – Medium – С дубликатами
  3. Permutations – Medium – Backtracking с visited
  4. Permutations II – Medium – С дубликатами
  5. Combination Sum – Medium – Backtracking с повторениями
  6. Combination Sum II – Medium – Без повторений
  7. Letter Combinations of a Phone Number – Medium – Backtracking
  8. N-Queens – Hard – Backtracking на доске

🧮 Этап 10. Динамическое программирование (14 задач)

  1. Climbing Stairs – Easy – 1D DP
  2. House Robber – Medium – 1D DP
  3. House Robber II – Medium – 1D DP + circular
  4. Longest Palindromic Substring – Medium – 2D DP
  5. Longest Common Subsequence – Medium – 2D DP
  6. Longest Increasing Subsequence – Medium – 1D DP + binary search
  7. Partition Equal Subset Sum – Medium – 0/1 Knapsack
  8. Coin Change – Medium – Unbounded Knapsack
  9. Coin Change II – Medium – Unbounded (количество способов)
  10. Word Break – Medium – 1D DP + HashSet
  11. Decode Ways – Medium – 1D DP
  12. Unique Paths – Medium – 2D DP
  13. Minimum Path Sum – Medium – 2D DP
  14. Edit Distance – Hard – 2D DP

➕ Бонус: Префиксные суммы и битовые операции (6 задач)

  1. Range Sum Query - Immutable – Easy – Prefix sum
  2. Subarray Sum Equals K – Medium – Prefix sum + HashMap
  3. Single Number – Easy – XOR
  4. Single Number II – Medium – Битовые операции
  5. Sum of Two Integers – Medium – Битовая арифметика
  6. Number of 1 Bits – Easy – Битовая арифметика

⚙️ Как я работаю

  • 10–15 минут самостоятельной попытки решить задачу.
  • Если не выходит — смотрю объяснение (не код), затем пишу своё решение.
  • После прохождения всех 108 задач начинаю новый круг — решаю всё заново, с каждым разом всё больше полагаясь на себя.

Этот метод помогает мне постепенно и глубоко освоить алгоритмы.

About

leetcode

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages