ch
Feedback
Алгоритмы - Собеседования, Олимпиады, ШАД

Алгоритмы - Собеседования, Олимпиады, ШАД

前往频道在 Telegram

Номер заявления регистрацию в РКН: № 5731053751 Чат: @algoses_chat По всем вопросам: @vice22821

显示更多

📈 Telegram 频道 Алгоритмы - Собеседования, Олимпиады, ШАД 的分析概览

频道 Алгоритмы - Собеседования, Олимпиады, ШАД (@algoses) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 11 878 名订阅者,在 教育 类别中位列第 16 981,并在 俄罗斯 地区排名第 55 342

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 11 878 名订阅者。

根据 20 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 14,过去 24 小时变化为 -7,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 19.92%。内容发布后 24 小时内通常能获得 19.48% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 2 366 次浏览,首日通常累积 2 314 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 6
  • 主题关注点: 内容集中在 строка, собеседование, foo, delete, o(n 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Номер заявления регистрацию в РКН: № 5731053751 Чат: @algoses_chat По всем вопросам: @vice22821

凭借高频更新(最新数据采集于 21 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 教育 类别中的关键影响点。

11 878
订阅者
-724 小时
+37
+1430
帖子存档
❗️ Через 7 часов закончится главное событие сезона - стажировка Т-банк На наших соответсвующих курсах уже выложен разбор математики и программирования, а на интенсиве по алгоритмам выложен разбор программирования. На все последние 7 часов 35% скидки в честь конца отбора. Все подробности у администратора. ➡️ Обязательно подаемся И не сомневаемся, это одна из лучших опций для получения первого опыта в индустрии: можно совмещать с учебой, загрузка от 20 часов в неделю, после нее легко залететь в штат и да, вам даже будут платить за нее! Для участия нужно просто заполнить анкету и решить отбор до 28 апреля. Задания на этот раз несложные (чекаем вот тут), но больше задач, где можно запросто ошибиться, специально сделали такие задачи, чтобы chatgpt путался с условиями и выдавал неправильные ответы и тех, кто спишет эти ответы, просто забанят в системе Т-банка. При этом из-за учебы подается меньше народу, все жесткие ботари заняты учебой, а значит у простых работяг куда больше шансов получить оффер! У топов собесы начнутся в мае, а у работяг в конце июня, когда сессия уже закончилась и есть силы и время, чтобы к ним подготовиться, еще не закончились. ➡️ Пишем качественную анкету Проходной на собес везде разный и зависит от популярности специальности и кол-во выделенных мест, региона. Где-то проход 350, а где-то 600 за контест. Далее отбор идет по анкете. Командам и HR очень важна ваша мотивация и погруженность в специальность. Будет обидно набрать полный балл за контест, но не заполнить анкету (подробный совет тоже даем участникам наших курсов). Общие советы такие: пишем про курсы, которые проходили и не проходили, фокусируем внимание на курсах от Т-банка. Только помните, что на собесе нужно будет не запутаться в этих выдумках. Обязательно пишем про олимпиадный опыт, даже школьный, от олимпиадников все просто сходят с ума. Пишем образование. Про свои стартапы и телеграмм каналы советую писать осторожно: это может отпугнуть. Подумают, что после года работы в штате вы уйдете строить свой мега успешный бизнес, а работодатель хочет, чтобы вы росли и развивались внутри компании и стали приносить пользу именной ей. Сразу создаем второй телеграмм канал для работы и учебы с настоящим именем и фамилией, без тупых статусов и аниме на аватаре. Это серьезно очень раздражает рекрутеров. Также с этого аккаунта не пишем никому и некуда никакую неоднозначную ерунду, которая может стать народным достоянием и вас скомпрометировать. Работодателю важно, чтобы вы разделяли корпоративные ценности. Касаемо составления анкеты и резюме более подробно рассказывал в ролике, обязательно посмотрите. ➡️ Собеседование Раньше большинство собесов было похоже на смотрины: команда рассказывала про себя, а вы про себя. Спрашивали мотивацию, бизнес кейс и может немного теории, задачи давали только на какого-нибудь риск аналитика. Сейчас все по-другому: контест не катает только ленивый, поэтому собесе почти всегда дают задачи. На аналитику и мл могут спросить матешу, скл, питон, а на разработчика и мл простенькие алгоритмы. Некоторые из этих заданий можно чекнуть тут, и тут, и тут, и тут, а если вы хотите разбор всех тасков с собесов - бегом на наши курсы. ➡️ Подробности Более подробно обо всем этом можно посмотреть в видео. Главное помните, что шанс выиграть в этой игре > 90% (по крайней мере, в прошлом году именно таким был процент взятых на стажировку среди наших учеников), если знать правила игры. Серьезно, прошлым летом выпускница нашего курса по аналитике прошла отбор и стала стажером-аналитиком едва закончив 11-ый класс. @postypashki_old

Завтра закончится отбора на стажировку в Т-банк Если хотите летом выйти на стажировку с высокой зарплатой и опытом работы в b
Завтра закончится отбора на стажировку в Т-банк Если хотите летом выйти на стажировку с высокой зарплатой и опытом работы в bigteche, то подаваться нужно уже сейчас. На наших соответсвующих курсах уже выложен разбор математики и программирования, а на интенсиве по алгоритмам выложен разбор программирования. 📌 Специально к закрытию отбора Скидка 35% на эти курсы с разборами до 28 апреля включительно. Также на курсах будет доступно:
➡️ разборы контеста Яндекса, Летних школ Яндекса ➡️Сочные пет проекты в портфолио ➡️Огромный банк технических вопросов ➡️Записи реальных собесов и интервью ➡️ Помощь с резюме и легендой
📌 Для записи на курс напишите менеджеру

Открылся отбор на стажировку в Т-Банк Задачи уже выложены в нашем чате (тут). Специально для участников карьерных курсов мы в
Открылся отбор на стажировку в Т-Банк Задачи уже выложены в нашем чате (тут). Специально для участников карьерных курсов мы выложим разбор соответствующих экзаменов. Также разберем экзамен по программированию на интенсиве по алгоритмам, на который также до 23 апреля действует специальная цена: 9150 5950 ₽. В разборе мы покажем подход к решению задач и как оформить ответ, чтобы получить высокий балл. Также на курсах будет доступно:
➡️ разборы контеста Яндекса, Летних школ Яндекса ➡️Огромный банк технических вопросов ➡️Записи реальных собесов и интервью
До 23 апреля курсы со скидкой 35%. 📌 Вопросы и запись — менеджеру

Задача с собеседования в Zopsmart Дана входная строка s. Переверните порядок слов в ней. Слово определяется как последовательность символов, не являющихся пробелами. Слова в s будут разделены хотя бы одним пробелом. Верните строку, содержащую слова в обратном порядке, объединённые одним пробелом. Обратите внимание, что строка s может содержать начальные или конечные пробелы, или несколько пробелов между двумя словами. В возвращаемой строке должен быть только один пробел между словами. Не включайте каких-либо лишних пробелов. Follow-up: если строковый тип данных - изменяемый в вашем языке, можете ли вы решить задачу in-place c O(1) дополнительной памяти? Пример 1: Input: s = "the sky is blue" Output: "blue is sky the" Пример 2: Input: s = " hello world " Output: "world hello" Пример 3: Input: s = "a good example" Output: "example good a" Ограничения: 1 <= s.length <= 10⁴ s содержит буквы английского алфавита (в нижнем и верхнем регистре), цифры и пробелы ' '. s состоит хотя бы из одного слова. НАШ ЧАТ АЛГОРИТМИСТОВ Решение Так как в питоне строки неизменяемы, мы не можем реализовать решение in-place с O(1) дополнительной памяти. Преобразуем строку в список строк методом split(), автоматически удаляя лишние пробелы - O(n). Используем два указателя: left - индекс первого слова в списке right - индекс последнего слова Пока left меньше right: - меняем местами элементы под индексом left с элементами под индексом right; - сдвигаем указатели навстречу друг другу. В конце объединяем слова списка в строку через один пробел и возвращаем её. Делитесь решением на вашем языке с O(1) дополнительной памяти в комментариях! Сложность O(n) - по времени (сплит и обход списка строк) O(n) - по памяти (храним список строк) Код class Solution: def reverseWords(self, s: str) -> str: words = s.split() left, right = 0, len(words) - 1 while left < right: words[left], words[right] = words[right], words[left] left += 1 right -= 1 return " ".join(words) @algoses

Ваше исследование стоит того, чтобы о нем рассказать На междисциплинарной молодежной конференции Центрального университета см
Ваше исследование стоит того, чтобы о нем рассказать На междисциплинарной молодежной конференции Центрального университета сможете не просто выступить, но и получить публикацию тезисов в РИНЦ и поддержку опытных исследователей. Студентам, аспирантам и молодым ученым доступны 6 секций: гуманитарные и естественные науки, ИИ, математика, бизнес и кибербезопасность. Секцию по кибербезу делаем совместно с факультетом ВМК МГУ. И да, будут не только доклады: пленарные сессии с учеными и инди-группа тоже в программе. Конференция пройдет 17 мая, но тезисы нужно подать до 3 мая Не готовы выступать? Приходите слушать. Регистрация — до 12 мая.

🚀Интенсивы к ШАД: экспресс подготовка за 2 недели Товарищи, первый этап отбора в ШАД начинается уже 30 апреля. Мы открываем
🚀Интенсивы к ШАД: экспресс подготовка за 2 недели Товарищи, первый этап отбора в ШАД начинается уже 30 апреля. Мы открываем наши интенсивы с разбором первого этапа, чтобы вы успели подготовиться за оставшееся время. ➡️Интенсив подойдёт, если: 🔵 поступаешь в ШАД в этом году и хочешь натаскаться за короткий срок 🔵 знаешь школьную программу, ведь этого достаточно для старта, все остальное мы возьмем на себя 🔵 уже готовился, но чувствуешь пробелы в отдельных темах 🔵 хочешь довести решение задач до автоматизма и научиться оформлять решение на полный балл ➡️ Доступны интенсивы по направлениям: ⬇️ Алгоритмы ⬇️ Теория вероятностей ⬇️ Линейная алгебра ⬇️ Математический анализ ⬇️ Дискретная математика ➡️Что внутри каждого интенсива: 🔵 Систематизированная теория + конспекты + ДЗ с проверкой от преподавателя 🔵 8 пробников и их разбор 🔵 Закрытая база заданий ШАД 🔵 Консультации и поддержка преподавателя во время отборочных 🔵 Мок-интервью к собеседованию ➡️Как устроен интенсив: Весь материал, который нужен к первому этапу шад будет разобран до 1 мая. Весь материал, который нужен ко второму этапу будет разобран до 15 мая. На каждом курсе 3 живых семинара. 💰До 18 апреля скидки 35%: Цена за 1 интенсив - 9 150 5 950 ₽ При покупке 2-х интенсивов - 18 300 10 900 ₽ При покупке 3-х интенсивов - 27 450 14 850 ₽ При покупке 4-х интенсивов - 36 600 17 800 ₽ При покупке от трёх и более + дискра в подарок 📌 Времени остается немного, начать подготовку нужно уже сейчас! Для вопросов и записи на курсы напишите менеджеру

В новом ролике обсудим изи темку, как получать офферы на 10 000$. Смотрим! Смотрим! https://www.youtube.com/watch?v=ovYjaPpV6
В новом ролике обсудим изи темку, как получать офферы на 10 000$. Смотрим! Смотрим! https://www.youtube.com/watch?v=ovYjaPpV6pw

Задача с собеседования в Zopsmart Дан массив nums, состоящий из n объектов, окрашенных в красный, белый и синий цвета. Отсортируйте их in-place так, чтобы объекты одного цвета оказались соседними, следуя порядку: красные, белые, синие. Будем использовать целые числа 0, 1 и 2 для обозначения красного, белого и синего, соответственно. Решите задачу без использования встроенной функции сортировки. Follow up: можете ли вы реализовать однопроходный алгоритм, использующий только константную дополнительную память? Пример 1: Input: nums = [2,0,2,1,1,0] Output: [0,0,1,1,2,2] Пример 2: Input: nums = [2,0,1] Output: [0,1,2] Ограничения: n == nums.length 1 <= n <= 300 nums[i] is either 0, 1, or 2. НАШ ЧАТ АЛГОРИТМИСТОВ Сборник алгоритмический задач с собесов Решение Базовое решение: двухпроходный алгоритм с сортировкой подсчётом. При первом проходе - подсчитываем кол-во 0, 1 и 2. При втором - перезаписываем массив, помещая сначала все 0, затем все 1 и, наконец, все 2. Сложность такого алгоритма: O(n) - по времени (проходим по массиву два раза) и O(1) - по памяти (храним только три переменные, перезаписываем массив in-place). Однако, предлагаю реализовать решение с использованием однопроходного алгоритма (follow-up). Для этой задачи подойдёт алгоритм "Национальный флаг Нидерландов", использующийся для сортировки массива с тремя различными значениями за один проход. Основная идея в разделении массива на три части (по типу цветовых границ на флаге) и использовании трёх указателей: low (сначала равен нулю) - отслеживает границу, где должны заканчиваться 0; mid (сначала равен нулю) - проходит по массиву слева направо; high (сначала равен len(nums) - 1) - отслеживает границу, где должны начинаться 2. Идём по массиву указателем mid, пока mid <=high: Если текущий элемент равен 0: меняем его местами с элементом под индексом low и увеличиваем значения обоих указателей; Если текущий элемент равен 1: оставляем его на месте и сдвигаем указатель mid вперёд; Иначе, если текущий элемент равен 2: меняем его местами с элементом под индексом high и уменьшаем значение указателя high. Указатель mid не сдвигается, так как нужно проверить эл-т, который пришёл из правой части. Сложность O(n) - по времени O(1) - по памяти Код class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ low, mid = 0, 0 high = len(nums) - 1 while mid <= high: if nums[mid] == 0: nums[mid], nums[low] = nums[low], nums[mid] mid += 1 low += 1 elif nums[mid] == 1: mid += 1 else: nums[mid], nums[high] = nums[high], nums[mid] high -= 1 @algoses

Алгоритмические задачи - это не только про найм. Это способ проверить, как ты думаешь: работаешь ли с ограничениями, замечаеш
Алгоритмические задачи - это не только про найм. Это способ проверить, как ты думаешь: работаешь ли с ограничениями, замечаешь ли крайние случаи и умеешь ли упрощать сложное. Сейчас есть возможность сделать это на практике. Решайте задачу от Ильи Царева, руководителя разработки Яндекс Go, до 12.00 12 апреля. Правильное решение даёт шанс попасть на конференцию Day&Night* Городских сервисов Яндекса, которая пройдет 18 апреля в Москве, и выиграть другие призы. Либо через заявку и ожидание, либо интереснее - через челлендж-задачкиии! Задачки тут *День и Ночь

Алгоритмические задачи - это не только про найм. Это способ проверить, как ты думаешь: работаешь ли с ограничениями, замечаеш
Алгоритмические задачи - это не только про найм. Это способ проверить, как ты думаешь: работаешь ли с ограничениями, замечаешь ли крайние случаи и умеешь ли упрощать сложное. Сейчас есть возможность сделать это на практике. Решайте задачу от Ильи Царева, руководителя разработки Яндекс Go, до 12.00 11 апреля. Правильное решение даёт шанс попасть на конференцию Day&Night* Городских сервисов Яндекса, которая пройдет 18 апреля в Москве, и выиграть другие призы. Либо через заявку и ожидание, либо интереснее - через челлендж-задачкиии! Задачки тут *День и Ночь

Задача с собеседования в eBay Дано целое положительное число n. Каждой цифре n присваивается знак в соответствии со следующими правилами: - самой старшей цифре присваивается положительный знак; - каждая следующая цифра имеет знак, противоположный знаку предыдущей цифры. Верните сумму всех цифр с соответствующими знаками. Пример 1: Input: n = 521 Output: 4 Объяснение: (+5) + (-2) + (+1) = 4. Пример 2: Input: n = 111 Output: 1 Объяснение: (+1) + (-1) + (+1) = 1. Пример 3: Input: n = 886996 Output: 0 Объяснение: (+8) + (-8) + (+6) + (-9) + (+9) + (-6) = 0. Ограничения: 1 <= n <= 10⁹ НАШ ЧАТ АЛГОРИТМИСТОВ Решение Сначала разберём базовое решение: Заводим переменные: sign - знак текущей цифры, сначала равняется 1 (самая старшая цифра имеет положительный знак) res - для накопления суммы цифр Преобразуем n в строку, проходим по ней слева направо: - присваиваем знак текущей цифре, умножая её на sign, и прибавляем к res; - меняем sign на противоположный, умножая на -1. Теперь оптимизируем решение, используя только математические операции без строки: В цикле проходим по цифрам числа, от младших разрядов к старшим: - остатком от деления получаем последнюю цифру. Обновляем сумму, вычитая из цифры предыдущий результат. - переходим к следующему разряду, применяя целочисленное деление. Формула гарантирует правильное присвоение знаков, так как вычитание предыдущего результата эквивалентно умножению всех накопленных цифр на -1. К примеру, для n = 521: res = 1 - 0 = 1 res = 2 - 1 = 1 res = 5 - (2 - 1) = 4 => +5 - 2 + 1 = 4 Сложность Базовое: O(log n) - по времени (количество цифр в числе) O(log n) - по памяти (храним строку) Оптимизированное: O(log n) - по времени O(1) - по памяти (храним res) Код Базовое: class Solution: def alternateDigitSum(self, n: int) -> int: n_str = str(n) sign = 1 res = 0 for char in n_str: res = res + int(char) * sign sign *= -1 return res Оптимизированное: class Solution: def alternateDigitSum(self, n: int) -> int: res = 0 while n: res = n % 10 - res n //= 10 return res @algoses

Хочешь в магистратуру, которая реально повлияет на твою карьеру? Центральный университет проводит День открытых дверей ИТ-маг
Хочешь в магистратуру, которая реально повлияет на твою карьеру? Центральный университет проводит День открытых дверей ИТ-магистратуры 6 и 7 апреля, онлайн и офлайн в Москве! Ты узнаешь: — как и на какие программы можно поступить в 2026 году; — как можно получить грант до 75%; — как обучение приводит к работе мечты, а не просто диплому. А также тебя ждут экскурсии по кампусу со студентами и ответы на все вопросы. Регистрируйся и разберись, какое направление действительно тебе подходит

Задача с собеседования в eBay Дан целочисленный массив nums. Переместите все нули в его конец, сохранив при этом относительный порядок ненулевых элементов. Обратите внимание, что необходимо сделать это in-place, без создания копии массива. Пример 1: Input: nums = [0,1,0,3,12] Output: [1,3,12,0,0] Пример 2: Input: nums = [0] Output: [0] Ограничения: 1 <= nums.length <= 10⁴ -2³¹ <= nums[i] <= 2³¹ - 1 НАШ ЧАТ АЛГОРИТМИСТОВ Решение Используем метод двух указателей, идём по массиву в одном направлении слева направо: l - позиция, куда нужно поставить следующее ненулевое число r - проходит по всем элементам массива Проходим по массиву указателем r: если r указывает на ненулевой элемент, меняем его местами с элементом на позиции l и двигаем левый указатель. После завершения итерации с индексом r: - все элементы до l будут ненулевыми; - все элементы от l до r включительно - нули. Вывод результата не требуется. Решение соблюдает принцип in-place (работаем с исходным массивом) и сохраняет порядок ненулевых элементов. Сложность O(n) - по времени (проходим по массиву один раз) O(1) - по памяти (используем две переменные, изменяем только исходный массив) Код class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ l = 0 for r in range(len(nums)): if nums[r] != 0: nums[l], nums[r] = nums[r], nums[l] l += 1 @algoses

Хэнбук по алгоритмам ШАД Собрали и разобрали все задачи с собеседований в ШАД. Привели необходимую теорию и задачи для закрепления. Вам же осталось только сесть, разобраться и прорешать - и алгособес в кармане! Еще больше подобных материалов на наших курсах в ШАД, залетаем в ШАД уже этим летом. @postypashki_old

Задача с собеседования в Zoho Дана строка s, разверните (изменив порядок на обратный) только все гласные в строке и верните полученную строку. Гласными являются буквы 'a', 'e', 'i', 'o', и 'u'. Они могут быть как в нижнем, так и в верхнем регистре, а также встречаться более одного раза. Пример 1: Input: "IceCreAm" Output: "AceCreIm" Explanation: Гласные в s: ['I', 'e', 'e', 'A']. После разворота гласных s превращается в "AceCreIm". Пример 2: Input: s = "leetcode" Output: "leotcede" Ограничения: 1 <= s.length <= 3 * 105 s состоит из печатных символов ASCII. НАШ ЧАТ АЛГОРИТМИСТОВ Решение Будем использовать метод двух указателей: left - индекс первого элемента в списке (после преобразования строки в список) right - индекс последнего элемента Гласные храним во множестве для быстрой проверки за O(1). Пока left меньше right: идём по строке в двух направлениях, проверяя символы, на которые указывают left и right. Если символ слева - не гласная: сдвигаем левый указатель; Если символ справа - не гласная: сдвигаем правый указатель; Если оба символа - гласные: меняем их местами и двигаем оба указателя. Так проходим по всему списку, пока указатели не встретятся, и в конце возвращаем полученную строку. Сложность O(n) - по времени (так как проходим по списку один раз) O(n) - по памяти (так как создаём список из символов строки) Код class Solution: def reverseVowels(self, s: str) -> str: s = list(s) vowels = set("aeiouAEIOU") left, right = 0, len(s) - 1 while left < right: if s[left] not in vowels: left += 1 elif s[right] not in vowels: right -= 1 else: s[left], s[right] = s[right], s[left] left += 1 right -= 1 return "".join(s) @algoses

Финальные скидки на карьерные курсы! Камрады, сейчас разгар сезона стажировок. Самое время взять себя в руки и подтянуть хард
Финальные скидки на карьерные курсы! Камрады, сейчас разгар сезона стажировок. Самое время взять себя в руки и подтянуть хард скиллы и проходить собесы. Поэтому мы открываем доступ к нашим карьерным курсам со скидкой 40% 🔥 Курсы подойдут начинающим специалистам, которые хотят прокачаться и уверенно проходить интервью в топовые компании. Обучение построено так, чтобы вы прошли путь от «я ничего не знаю и не понимаю» до «могу уверенно пройти тех собес и получуть оффер». Вы научитесь решать задачи с реальных отборов, сделаете пет-проект и пройдёте пробный собес с нами, чтобы полностью быть готовым к настоящим, а также получите помощь на всех этапах отбора: от резюме до испытательного срока. На карьерных курсах готовим по 4 направлениям: ➡️ алгоритмы старт ➡️ аналитика старт ➡️ машинное обучение старт ➡️ бэкенд разработка старт (если не открываются ссылки, нужно скопировать и вставить в браузер) Что входит в каждый курс:
🔵Разбор донабора Т-Банка и Яндекса на весеннюю стажировку 🔵Мгновенный доступ к лекциям и семинарам - учитесь в своём темпе 🔵ДЗ и пет-проект с обратной связью от преподавателя 🔵Практика на реальных боевых задачах 🔵Банк заданий и вопросов с собеседований в BigTech 🔵Пробный тех.собес с обратной связью от эксперта 🔵Помощь на всех этапах: от составления резюме до испытательного срока 🔵Рефералка в топовую компанию по итогу прохождения курса
📌 Скидка 40% действует до 18 марта Цена за 1 курс - 13 450 7 950 ₽ При покупке от 2-х курсов - 7 250 ₽ за курс При покупке от 3-х и более - 6 450 ₽ за курс Программу и отзывы на курсы можно найти на сайте ➡️Советуем не затягивать. Для вопросов и записи на курсы напишите менеджеру

🔥 Уже завтра стартует новый поток курсов к ШАД До первого этапа отбора остаётся все меньше времени. Но и за этот период можн
🔥 Уже завтра стартует новый поток курсов к ШАД До первого этапа отбора остаётся все меньше времени. Но и за этот период можно подготовиться и уверенно пройти отбор. Поэтому если вы откладывали подготовку до последнего момента — сейчас самое время ее начать. Курсы подготовки к ШАД / AI Masters / ААА начинаются завтра 8 марта, а значит вы еще успеваете присоединиться. Мы готовим по пяти ключевым направлениям: ⬇️ Дискретная математика ⬇️ Алгоритмы ⬇️ Теория вероятностей ⬇️ Линейная алгебра ⬇️ Математический анализ В основе обучения — практика: 🔵задачи формата отборов 🔵разбор контестов 🔵пробные экзамены 🔵мок-интервью 🔵доступ к закрытой базе заданий ШАДа Каждый год мы подробно разбираем все этапы экзамена: смотрим, какие темы появляются чаще, какие задачи повторяются, какие паттерны встречаются в отборах. На основе этого анализа строится программа курсов — вы готовитесь к тому, что реально будет на экзамене. ✨ До 8 марта в честь запуска курсов мы дарим скидку 33% Цена на 1 курс - 12 950 ₽ При покупке 2-х курсов - 12 450 ₽ за курс При покупке от 3-х и более - 11 950 ₽ за курс При покупке 3+ курсов вы получаете курс по дискретной математике в подарок 💫 На курсах уже выложены первые материалы, поэтому при записи вы сразу получаете доступ к лекциям и задачам. ➡️Для вопросов и записи на курсы напишите менеджеру. После старта цены повысятся.

Задача с собеседования в Zoho Даны две строки: word1 и word2. Верните минимальное количество операций, требуемых для преобразования строки word1 в строку word2. Вы можете выполнять следующие три операции над словом: - вставить символ - удалить символ - заменить символ Пример 1: Input: word1 = "horse", word2 = "ros" Output: 3 Explanation: horse -> rorse (заменить 'h' на 'r') rorse -> rose (удалить 'r') rose -> ros (удалить 'e') Пример 2: Input: word1 = "intention", word2 = "execution" Output: 5 Explanation: intention -> inention (удалить 't') inention -> enention (заменить 'i' на 'e') enention -> exention (заменить 'n' на 'x') exention -> exection (заменить 'n' на 'c') exection -> execution (вставить 'u') Ограничения: 0 <= word1.length, word2.length <= 500 word1 и word2 состоят из строчных английских букв НАШ ЧАТ АЛГОРИТМИСТОВ Решение Задача помечена тегом "Dynamic Programming" и является классическим примером задачи на вычисление "расстояния Левенштейна". Используем восходящее dp с табуляцией. Сначала разберём базовое решение, а потом оптимизируем: Заполняем таблицу размером (len(word1) + 1) × (len(word2) + 1), где dp[i][j] - минимальное кол-во операций, необходимое для превращения первых i символов word1 в первые j символов word2. i и j - это кол-во символов, поэтому dp[0][j] соответствует пустой word1, dp[i][0] - пустой word2. Базовый случай, когда одна из строк пустая: word1 пустая: нужно вставить все символы word2 (j вставок); word2 пустая: нужно удалить все символы word1 (i удалений). Остальные ячейки заполняем, смотря на последние символы текущих префиксов (word1[i-1] и word2[j-1]): Если символы совпадают, нам не нужно ничего с ними делать, копируем значение из левой верхней ячейки; Если символы не совпадают, есть три варианта действий, выбираем минимальный по кол-ву операций: 1. Замена: dp[i-1][j-1] + 1 - заменяем последний символ word1 на последний символ word2; 2. Удаление: dp[i-1][j] + 1 - удаляем последний символ из word1; 3. Вставка: dp[i][j-1] + 1 - вставляем последний символ word2 в word1. Оптимизируем: Храним не всю таблицу, а две переменные: prev (предыдущая строка, на первом шаге - первая строка таблицы) и cur (текущая строка, вначале заполнена нулями). Если длина word1 меньше длины word2, меняем строки местами: более короткая строка становится word2, внутренний цикл идёт по ней, оптимизируя память до O(min(m, n)). Во внешнем цикле: проходим по всем символам word1: - в начале каждой итерации устанавливаем первый эл-т текущей строки: cur[0] = i. Это соответствует случаю, когда word2 пустая, поэтому нужно удалить все i символов из word1. Во внутреннем: проходим по word2: - символы совпадают: копируем значение из левой верхней ячейки (prev[j-1]); - не совпадают: берём минимум из трёх значений: prev[j-1] - замена символа word1[i-1] на word2[j-1]; обе строки становятся короче на 1, в таблице dp это диагональ. prev[j] - удаление символа word1[i-1]; word1 становится короче, word2 - той же длины, в таблице это верх. cur[j-1] - вставка символа word2[j-1] в word1; word2 - короче, word1 - той же длины, в таблице это значение слева. + 1, так как любая операция требует одного действия. После заполнения строки меняем местами prev и cur, текущая строка становится предыдущей для следующей итерации. После завершения циклов prev содержит последнюю заполненную строку, а её последний эл-т является ответом. Сложность O(mn) - по времени (проходим по всем парам символов) O(min(m, n)) - по памяти Код class Solution: def minDistance(self, word1: str, word2: str) -> int: if len(word1) < len(word2): word1, word2 = word2, word1 prev = list(range(len(word2) + 1)) cur = [0] * (len(word2) + 1) for i in range(1, len(word1) + 1): cur[0] = i for j in range(1, len(word2) + 1): if word1[i-1] == word2[j-1]: cur[j] = prev[j-1] else: cur[j] = min(prev[j-1], prev[j], cur[j-1]) + 1 prev, cur = cur, prev return prev[-1] @algoses

🔊 Добавляем курс по дискретной математике Мы расширяем линейку курсов подготовки к ШАД / AI Masters / ААА и запускаем курс п
🔊 Добавляем курс по дискретной математике Мы расширяем линейку курсов подготовки к ШАД / AI Masters / ААА и запускаем курс по дискретной математике. У нас было много запросов на этот курс, и неудивительно: по статистике именно на задачах по дискретке люди теряют заветные баллы. Также без ее понимания почти нет шансов решить задачи по теорверу. Программу, подробности и отзывы на курс смотрите на сайте. Итого мы готовим по пяти ключевым направлениям: ⬇️ Дискретная математика ⬇️ Алгоритмы ⬇️ Теория вероятностей ⬇️ Линейная алгебра ⬇️ Математический анализДо 1.03 включительно скидка 33% на - курс по дискретной математике: 20 150 12 950₽ - покупки от трех+ курсов: от 60450 35 850₽ А если вы приобрели из линейки 3 и более курса, то курс по дискретной математике идет в подарок. ➡️Для вопросов и записи на курсы напишите менеджеру

Задача с собеседования в Zoho Вы поднимаетесь по лестнице. Чтобы достичь вершины, нужно сделать n шагов. Каждый раз вы можете подняться либо на 1, либо на 2 ступеньки. Сколькими различными способами вы можете подняться на вершину? Пример 1: Input: n = 2 Output: 2 Explanation: Существует два способа подняться на вершину: 1. 1 шаг + 1 шаг 2. 2 шага Пример 2: Input: n = 3 Output: 3 Explanation: Существует три способа подняться на вершину: 1. 1 шаг + 1 шаг + 1 шаг 2. 1 шаг + 2 шага 3. 2 шага + 1 шаг Ограничения: 1 <= n <= 45 НАШ ЧАТ АЛГОРИТМИСТОВ Решение Задача помечена тегом "Dynamic Programming", оптимальным вариантом решения будет использование восходящего подхода с табуляцией, так мы избавимся от риска переполнения стека при глубокой рекурсии. Для оптимизации памяти до O(1) храним только две переменные (cur_step и prev_step) вместо dp массива. Начинаем с базовых случаев (ступеньки 0 и 1), при которых ответ будет равен 1 способу => инициализируем наши две переменные значениями 1. Запускаем цикл и поднимаемся вверх по лестнице со второй ступеньки, обновляя значения кол-ва способов подняться на предыдущую и текущую ступеньки, с каждой итерацией: - текущая ступенька становится предыдущей; - новая текущая ступенька равняется сумме способов подняться на две предыдущие ступеньки (по сути, классическая формула из задач о числах Фибоначчи: f(n) = f(n-1) + f(n-2)). После окончания работы цикла выводим cur_step с последним вписанным в переменную значением. Сложность O(n) - по времени (так как делаем один проход по всем ступенькам) O(1) - по памяти (так как храним только две переменные) Код class Solution: def climbStairs(self, n: int) -> int: if n == 0 or n == 1: return 1 cur_step, prev_step = 1, 1 for _ in range(2, n + 1): prev_step, cur_step = cur_step, prev_step + cur_step return cur_step @algoses