ПРОГРАММА КУРСА 🧐
Условные обозначения:
✅ - тема готова
✏️ - тема в разработке
___
Асимптотика
✅ Big O Notation
✅ Space Compexity
Алгоритмы
✅ Binary search / Бинарный поиск
✅ Depth-First Search (DFS) / Обход в глубину
✅ Breadth-First Search (BFS) / Обход в ширину
✏️ Dijkstra's algorithm / Алгоритм Дейкстры
✏️ Greedy algorithm / Жадные алгоритмы
✏️ Dynamic Programming (DP) / Динамическое программирование
✏️ Bitwise Algorithms / Побитовые алгоритмы
Сортировка
✅ Selection Sort / Сортировка выбором
✅ Bubble Sort / Пузырьковая сортировка
✅ Quick Sort / Быстрая сортировка
✏️ Merge Sort / Сортировка слиянием
✏️ Topological Sort / Топологическая сортировка
Паттерны / Техники
✅ Two Pointers / Два указателя
✅ Sliding Window / Скользящее окно
✅ Рекурсия
Структуры данных
✅ Array / Массив
✅ Matrix / Матрица
✅ Linked list / Связный список
✅ Stack / Стек
✅ Queue / Очередь
✅ HashMap / хеш-таблица
✅ Binary Heap / Двоичная Куча
✅ Binary Tree / Двоичное дерево
✏️ Graph / Граф
Условные обозначения:
___
Асимптотика
Алгоритмы
Сортировка
Паттерны / Техники
Структуры данных
Please open Telegram to view this post
VIEW IN TELEGRAM
СТАТИСТИКА ПО ЗАДАЧАМ
На данный момент решено 80 задач
📗Easy - 55
📒Medium - 24
📕Hard - 1
На данный момент решено 80 задач
📗Easy - 55
📒Medium - 24
📕Hard - 1
AlcoRhythm это не просто игра слов!
Изначально AlcoRhythm кажется простым каламбуром, но если копнуть глубже - все оказывается интереснее.
Название выбрано не случайно. За ним стоят две причины.
💡 Алгоритмы это просто!
Хорошее объяснение должно заходить так же легко, как пиво после рабочего дня.
В курсе будут примеры на бытовых аналогиях, иногда даже на пиве. Не ради шутки, а ради понимания.
💡 Алгоритмы, как алкоголь: полезны в малых дозах.
Не нужно задрачивать leetcode, заучивать все подряд, тащить сложные решения туда, где хватает и простых. Всему своя мера, контекст и цель.
‼️ AlcoRhythm это про:
- простоту вместо пафоса;
- понимание вместо заучивания;
- здравый алгоритмический баланс.
Изначально AlcoRhythm кажется простым каламбуром, но если копнуть глубже - все оказывается интереснее.
Название выбрано не случайно. За ним стоят две причины.
Хорошее объяснение должно заходить так же легко, как пиво после рабочего дня.
В курсе будут примеры на бытовых аналогиях, иногда даже на пиве. Не ради шутки, а ради понимания.
Не нужно задрачивать leetcode, заучивать все подряд, тащить сложные решения туда, где хватает и простых. Всему своя мера, контекст и цель.
- простоту вместо пафоса;
- понимание вместо заучивания;
- здравый алгоритмический баланс.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
LMS? Нет, спасибо
Learning Management System / Система управления обучением
Для многих алгоритмы и структуры данных уже звучат как что-то сложное и непонятное. Мне не хотелось усиливать это ощущение новой платформой.
___
Почему Telegram:
✅ Нулевой порог входа
Не нужна регистрация, логины, пароли или дополнительное приложение. Telegram есть почти у всех. Открыл - изучаешь.
✅ Интуитивно понятный интерфейс
Не нужно разбираться, где уроки, где прогресс, где кнопка "продолжить". Все работает так же просто, как обычные сообщения. Ничего лишнего, только контент.
✅ Коротко и по делу
Каждое сообщение это короткое видео, текстовый пример или изображение.
Не теряешься. Легко вернуться, отметив пройденные темы реакцией.
✅ Быстрый доступ к материалам
Видео и материалы открываются стабильно и быстро. Открыл - работает.
✅ Ощущение живого процесса, а не LMS.
Это не очередная платформа с курсами.
Личный разбор в удобном для тебя формате.
___
Комфортное изучение алгоритмов без лишнего напряжения.
Learning Management System / Система управления обучением
Для многих алгоритмы и структуры данных уже звучат как что-то сложное и непонятное. Мне не хотелось усиливать это ощущение новой платформой.
___
Почему Telegram:
Не нужна регистрация, логины, пароли или дополнительное приложение. Telegram есть почти у всех. Открыл - изучаешь.
Не нужно разбираться, где уроки, где прогресс, где кнопка "продолжить". Все работает так же просто, как обычные сообщения. Ничего лишнего, только контент.
Каждое сообщение это короткое видео, текстовый пример или изображение.
Не теряешься. Легко вернуться, отметив пройденные темы реакцией.
Видео и материалы открываются стабильно и быстро. Открыл - работает.
Это не очередная платформа с курсами.
Личный разбор в удобном для тебя формате.
___
Комфортное изучение алгоритмов без лишнего напряжения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Теряешься в алгоритмах?
"Базовая база" решает самые распространенные страхи новичков.
___
🐊 Страх начинающих
"Боюсь запутаться в терминологии, объеме информации и сложных задачах"
🐸 Материал разбит на небольшие части: короткие видео, текстовые объяснения, примеры. Есть даже отдельный словарик для «умных» слов. Дополнительные источники не потребуются.
___
🐊 Не знаю с чего начать
"Не понимаю с чего начать решение, какой алгоритм использовать"
🐸 Материал выстроен от простого к сложному. Разбор темы это не только решение задач: учимся определять признаки алгоритма/структуры данных и выявлять истинную цель из условия задачи.
___
🐊 Алгоритмическое плато
"Решаю только базовые задачи. Не понимаю как перейти к более сложным"
🐸 Плавный переход от Easy к Medium. Большинство Medium задач это сочетание простых шагов. Учимся разбивать задачу на блоки и соединять их в рабочий код.
___
🐊 Перегруз информацией
"Слишком много источников, не могу собрать все в одну понятную систему"
🐸 Все собрано в одном месте: видео, текст, примеры, изображения, словарь с терминами, полезные формулы. Все под рукой.
___
🐊 Не умею объяснять решение
"Решаю задачу, но не могу объяснить свой подход. Боюсь интервью."
🐸 Учимся думать как интервьюер: понимаем, что он хочет услышать, на что стоит обратить внимание и чего лучше избегать. Мок-собесы научат проговаривать решение и контролировать время, чтобы уверенно проходить интервью.
___
Итог:
Базовый уровень пройден, когда ты уверенно решаешь задачи Easy и начинаешь спокойно справляться с Medium. Появляется понимание, как подходить к задачам и не теряться в алгоритмах.
"Базовая база" решает самые распространенные страхи новичков.
___
"Боюсь запутаться в терминологии, объеме информации и сложных задачах"
___
"Не понимаю с чего начать решение, какой алгоритм использовать"
___
"Решаю только базовые задачи. Не понимаю как перейти к более сложным"
___
"Слишком много источников, не могу собрать все в одну понятную систему"
___
"Решаю задачу, но не могу объяснить свой подход. Боюсь интервью."
___
Итог:
Базовый уровень пройден, когда ты уверенно решаешь задачи Easy и начинаешь спокойно справляться с Medium. Появляется понимание, как подходить к задачам и не теряться в алгоритмах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Инсайдерский взгляд
Интересно, что думают участники курса…
Расскажи, как проходит обучение.
Даже несколько слов будут полезны:
- помогут тем, кто сомневается
- покажут, что можно улучшить
- позволят зафиксировать твой промежуточный прогресс.
Шпаргалка для комментариев внутри⬇️
Интересно, что думают участники курса…
Расскажи, как проходит обучение.
Даже несколько слов будут полезны:
- помогут тем, кто сомневается
- покажут, что можно улучшить
- позволят зафиксировать твой промежуточный прогресс.
Шпаргалка для комментариев внутри
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Газета "Алгоритмы и Факты"
Курс приобрел дополнительный (необязательный) раздел: "Информация для общего развития". В нем будут собраны интересные факты: математические, исторические да и просто любопытные.
Это не сборник рандомных формул. Каждая тема подкреплена задачей. Так вы сможете увидеть, как интересные факты оживают в задачах и алгоритмах.
Курс приобрел дополнительный (необязательный) раздел: "Информация для общего развития". В нем будут собраны интересные факты: математические, исторические да и просто любопытные.
Это не сборник рандомных формул. Каждая тема подкреплена задачей. Так вы сможете увидеть, как интересные факты оживают в задачах и алгоритмах.
1 2
Типичный новичок на LeetCode выглядит так:
- открыл задачу → попробовал решить;
- посмотрел решение → «ага, понятно»;
- закрыл → забыл.
Поздравляю! Вы только что завершили интеллектуальный спринт на месте.
Алгоритмические навыки не появляются сами собой. Их нужно развивать!
✅ Видеть признаки алгоритмов;
✅ Находить подсказки в условии;
✅ Понимать конечную цель.
На курсе мы именно этим и занимаемся…
Но если вы все-таки решили играть в одиночку, я баффнул вас шпаргалкой. В ней: признаки основных алгоритмов и стратегия их изучения.
В воскресенье (11 января) в 20:00 проведу стрим с решением задач и покажу как пользоваться шпаргалкой. Подписывайся, чтобы не потеряться :}
Если баффа маловато, посмотри видео с мемасами для поднятие боевого настроения❤️
- открыл задачу → попробовал решить;
- посмотрел решение → «ага, понятно»;
- закрыл → забыл.
Поздравляю! Вы только что завершили интеллектуальный спринт на месте.
Алгоритмические навыки не появляются сами собой. Их нужно развивать!
На курсе мы именно этим и занимаемся…
Но если вы все-таки решили играть в одиночку, я баффнул вас шпаргалкой. В ней: признаки основных алгоритмов и стратегия их изучения.
В воскресенье (11 января) в 20:00 проведу стрим с решением задач и покажу как пользоваться шпаргалкой. Подписывайся, чтобы не потеряться :}
Если баффа маловато, посмотри видео с мемасами для поднятие боевого настроения
Please open Telegram to view this post
VIEW IN TELEGRAM
Стрим -> Видео
Для тех кто пропустил, собрал стрим в видео.
Для меня это новый формат, поддержите комментариями и лайками на YT плииз❤️
🍿 СМОТРЕТЬ
Для тех кто пропустил, собрал стрим в видео.
Для меня это новый формат, поддержите комментариями и лайками на YT плииз
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
AlcoRhythm Lab
Изучать алгоритмы и структуры данных ради литкода - занятие сомнительное, а где применять полученные знания - не понятно.
На самом деле все вокруг нас, стоит просто оглянуться…
Пример из жизни:
14 января. Неплохо бы поздравить маму со Старым Новым Годом. Берешь телефон, открываешь контакты, в поиске вводишь «Мама».
Хм…интересно, а как работает поиск контактов в айфоне? Если там может быть до 50 000 карточек, то вряд ли это простой перебор.
Конечно, реализация поиска встречается куда реже, чем покраска кнопки, но решение таких задач, как минимум, развивает соображалку да и просто делает тебя более эрудированным.
Формат телеграма хорошо зашел для курса, но не всем интересно полноценное обучение (или пока просто не готовы). Я создал отдельный канал, где буду разбирать алгоритмы и структуры данных на практике. Первое видео прикреплено к посту, а уже завтра напишу реализацию префиксного дерева.
Мне не нравится современная тенденция - подписываться на все подряд, поэтому я установил минимальную сумму - 200р (вчера 1 огурец и 1 томат купил за 150…лол)
Если вам интересен данный формат, увидимся в AlcoRhythm Lab❤️
Изучать алгоритмы и структуры данных ради литкода - занятие сомнительное, а где применять полученные знания - не понятно.
На самом деле все вокруг нас, стоит просто оглянуться…
Пример из жизни:
14 января. Неплохо бы поздравить маму со Старым Новым Годом. Берешь телефон, открываешь контакты, в поиске вводишь «Мама».
Хм…интересно, а как работает поиск контактов в айфоне? Если там может быть до 50 000 карточек, то вряд ли это простой перебор.
Конечно, реализация поиска встречается куда реже, чем покраска кнопки, но решение таких задач, как минимум, развивает соображалку да и просто делает тебя более эрудированным.
Формат телеграма хорошо зашел для курса, но не всем интересно полноценное обучение (или пока просто не готовы). Я создал отдельный канал, где буду разбирать алгоритмы и структуры данных на практике. Первое видео прикреплено к посту, а уже завтра напишу реализацию префиксного дерева.
Мне не нравится современная тенденция - подписываться на все подряд, поэтому я установил минимальную сумму - 200р (вчера 1 огурец и 1 томат купил за 150…лол)
Если вам интересен данный формат, увидимся в AlcoRhythm Lab
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
AlcoRhythm Lab
Второе видео про поиск в Контактах.
Создание Prefix Tree c функциями:
• добавление слова
• проверка слова целиком
• нахождение слов по префиксу
✅ Присоединиться
Второе видео про поиск в Контактах.
Создание Prefix Tree c функциями:
• добавление слова
• проверка слова целиком
• нахождение слов по префиксу
Please open Telegram to view this post
VIEW IN TELEGRAM
Array(s.utf8) -vs- Array(s)
Частенько, решая задачи со строками, не попадаешь в первый столбик, хотя написал оптимальное решение. Наиболее частая ошибка - Array(s).
Давайте разберемся почему в самом быстром решении Array(s.utf8) и что это такое.
___
В Swift строка String - не массив символов.
String:
• хранится в UTF-8;
• поддерживает Unicode;
• каждый Character может занимать различное число байт;
• доступ к Character - операция не O(1).
При такой записи
Swift под капотом:
• декодирует UTF-8;
• собирает Character;
• проверяет границы;
• создает value type Character.
___
s.utf8 - последовательность байтов (UInt8), уже лежащих в памяти строки.
Array(s.utf8) это:
• линейный массив байтов;
• без Unicode-логики;
• без декодирования;
• с прямым доступом по индексу.
___
String(bytes: array, encoding: .utf8)
• однократное создание строки;
• без поэлементного append;
• без пересчета индексов String.Index;
• без проверки Unicode.
___
Решая задачу на собеседовании важно уточнить:
Т.к. вход ограничен ASCII-символами, можно безопасно работать с UTF-8 байтами и получить линейный алгоритм без накладных расходов Unicode.
Частенько, решая задачи со строками, не попадаешь в первый столбик, хотя написал оптимальное решение. Наиболее частая ошибка - Array(s).
Давайте разберемся почему в самом быстром решении Array(s.utf8) и что это такое.
___
В Swift строка String - не массив символов.
String:
• хранится в UTF-8;
• поддерживает Unicode;
• каждый Character может занимать различное число байт;
• доступ к Character - операция не O(1).
При такой записи
for ch in s { ... }
Swift под капотом:
• декодирует UTF-8;
• собирает Character;
• проверяет границы;
• создает value type Character.
___
s.utf8 - последовательность байтов (UInt8), уже лежащих в памяти строки.
Array(s.utf8) это:
• линейный массив байтов;
• без Unicode-логики;
• без декодирования;
• с прямым доступом по индексу.
___
String(bytes: array, encoding: .utf8)
• однократное создание строки;
• без поэлементного append;
• без пересчета индексов String.Index;
• без проверки Unicode.
___
Решая задачу на собеседовании важно уточнить:
Т.к. вход ограничен ASCII-символами, можно безопасно работать с UTF-8 байтами и получить линейный алгоритм без накладных расходов Unicode.
На днях смотрел собеседование в Т-Банк. Увидев первую задачу, с легкостью решил ее в голове, НО! это произошло только благодаря насмотренности.
Дан массив целых чисел.
Разрешается выполнение следующей операции любое количество раз: два соседних элемента меняются между собой знаками.
Выведите максимальную сумму элементов массива, которую можно получить.
Появилось решение в голове? Наверняка нет.
Это чистый техтекст, без намеков на алгоритмы и структуры данных. Сухо, как в документации.
___
Есть целая категория задач, где алгоритмы и структуры данных ни при чем.
Условие может быть любым:
• соседние элементы меняются знаками;
• необходимо поменять знаки у k элементов;
• необходимо поменять знаки k раз;
• и т.д.
Если видите задачу про смену знаков - почти всегда сортируйте массив.
Сделали сортировку - дальше будет проще.
Проверьте на задаче 1005. Maximize Sum Of Array After K Negations.
___
Мораль: Круто, когда кто-то берет тебя за руку и показывает куда смотреть, а куда нет :Ъ
Please open Telegram to view this post
VIEW IN TELEGRAM
Соц.опрос: Напишешь реализацию хеш-таблицы?
Anonymous Poll
22%
Да, уверен
39%
Спорный вопрос
39%
Нет, не представляю как
Media is too big
VIEW IN TELEGRAM
AlcoRhythm Lab, продолжаем...
Идею с практикой вы не поддержали, но я все равно хочу развивать это направление🙂
___
Список контактов в телефоне
Часть 3 - удаление слова из префиксного дерева
___
Присоединиться к AlcoRhythm Lab
Идею с практикой вы не поддержали, но я все равно хочу развивать это направление
___
Список контактов в телефоне
Часть 3 - удаление слова из префиксного дерева
___
Присоединиться к AlcoRhythm Lab
Please open Telegram to view this post
VIEW IN TELEGRAM
ASCII
ASCII (American Standard Code for Information Interchange) - стандарт кодирования букв латинского алфавита, цифр, некоторых специальных знаков и управляющих символов, принятый в 1963 году Американской ассоциацией стандартов как основной способ представления текстовых данных в ЭВМ.
Проще говоря: таблица соответствий.
___
Классический ASCII содержит 128 символов, которые делятся на 3 группы:
1. Управляющие символы (0–31)
Это не буквы и не цифры. Их не видно. Необходимы для управления текстом.
0 - конец строки
9 - TAB
2. Печатные символы (32–126)
Пробел и знаки
32 - " "
33 - "!"
64 - "@"
Цифры
48 - "0"
49 - "1"
...
57 - "9"
Большие буквы
65 - "A"
66 - "B"
...
90 - "Z"
Прописные буквы
97 → "a"
98 → "b"
...
122 → "z"
3. DEL (127)
Исторический символ удаления. Сейчас почти не используется.
ASCII - только латиница. Никаких эмодзи, кириллицы или китайских иероглифов.
___
Самое важное свойство ASCII - символы идут подряд
___
Идея в любом языке одинаковая:
Символ = число
Всегда можно:
• получить код символа;
• работать с ним как с числом;
• превратить обратно в символ.
___
Unicode не заменил ASCII - он его включил.
В 70–90-х: операционные системы, файловые форматы, протоколы уже существовали и использовали ASCII. Unicode был вынужден подстроиться, а не диктовать условия.
"A" в ASCII = "A" в Unicode
"0" в ASCII = "0" в Unicode
Байтовые значения совпадают. Это сделано специально, чтобы ничего не сломать.
___
Весь интернет построен на ASCII
GET / index.html HTTP/1.1
Host: example. com
• ключевые слова
• разделители
• управляющие символы
Все это ASCII.
ASCII (American Standard Code for Information Interchange) - стандарт кодирования букв латинского алфавита, цифр, некоторых специальных знаков и управляющих символов, принятый в 1963 году Американской ассоциацией стандартов как основной способ представления текстовых данных в ЭВМ.
Проще говоря: таблица соответствий.
___
Классический ASCII содержит 128 символов, которые делятся на 3 группы:
1. Управляющие символы (0–31)
Это не буквы и не цифры. Их не видно. Необходимы для управления текстом.
0 - конец строки
9 - TAB
2. Печатные символы (32–126)
Пробел и знаки
32 - " "
33 - "!"
64 - "@"
Цифры
48 - "0"
49 - "1"
...
57 - "9"
Большие буквы
65 - "A"
66 - "B"
...
90 - "Z"
Прописные буквы
97 → "a"
98 → "b"
...
122 → "z"
3. DEL (127)
Исторический символ удаления. Сейчас почти не используется.
ASCII - только латиница. Никаких эмодзи, кириллицы или китайских иероглифов.
___
Самое важное свойство ASCII - символы идут подряд
___
Идея в любом языке одинаковая:
Символ = число
Всегда можно:
• получить код символа;
• работать с ним как с числом;
• превратить обратно в символ.
___
Unicode не заменил ASCII - он его включил.
В 70–90-х: операционные системы, файловые форматы, протоколы уже существовали и использовали ASCII. Unicode был вынужден подстроиться, а не диктовать условия.
"A" в ASCII = "A" в Unicode
"0" в ASCII = "0" в Unicode
Байтовые значения совпадают. Это сделано специально, чтобы ничего не сломать.
___
Весь интернет построен на ASCII
GET / index.html HTTP/1.1
Host: example. com
• ключевые слова
• разделители
• управляющие символы
Все это ASCII.
Попробуйте решить задачу:
171. Excel Sheet Column Number
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Использование ASCII позволит не создавать дополнительную структуру данных (например хеш-таблицу).
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтобы понять хеш-таблицу, надо написать хеш-таблицу!
Привычно считается, что вставка, удаление и получение значения по ключу выполняется за O(1).
Так ли это на самом деле?
Что такое амортизированная сложность?
Зачем и когда делать resize?
Проясним окончательно эти вопросы, написав хеш-таблицу своими ручками :}
🍿 СМОТРЕТЬ БЕЗ РЕГИСТРАЦИИ
Но, желательно, с подпиской :Ъ
Привычно считается, что вставка, удаление и получение значения по ключу выполняется за O(1).
Так ли это на самом деле?
Что такое амортизированная сложность?
Зачем и когда делать resize?
Проясним окончательно эти вопросы, написав хеш-таблицу своими ручками :}
Но, желательно, с подпиской :Ъ
Please open Telegram to view this post
VIEW IN TELEGRAM