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

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

Open in Telegram

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

Show more

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

Channel Алгоритмы - Собеседования, Олимпиады, ШАД (@algoses) in the Russian language segment is an active participant. Currently, the community unites 12 001 subscribers, ranking 16 548 in the Education category and 53 809 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 12 001 subscribers.

According to the latest data from 02 September, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 42 over the last 30 days and by -3 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 20.13%. Within the first 24 hours after publication, content typically collects 10.92% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 2 415 views. Within the first day, a publication typically gains 1 310 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 9.
  • Thematic interests: Content is focused on key topics such as строка, собеседование, foo, delete, o(n.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Номер заявления регистрацию в РКН: № 5731053751 Чат: @algoses_chat По всем вопросам: @vice22821

Thanks to the high frequency of updates (latest data received on 03 September, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Education category.

12 001
Subscribers
-324 hours
-17 days
+4230 days
Attracting Subscribers
September '26
September '26
+3
in 0 channels
August '26
+160
in 1 channels
Get PRO
July '26
+143
in 1 channels
Get PRO
June '26
+141
in 0 channels
Get PRO
May '26
+182
in 0 channels
Get PRO
April '26
+138
in 1 channels
Get PRO
March '26
+134
in 1 channels
Get PRO
February '26
+249
in 0 channels
Get PRO
January '26
+341
in 3 channels
Get PRO
December '25
+143
in 0 channels
Get PRO
November '25
+214
in 1 channels
Get PRO
October '25
+222
in 1 channels
Get PRO
September '25
+348
in 1 channels
Get PRO
August '25
+297
in 4 channels
Get PRO
July '25
+288
in 1 channels
Get PRO
June '25
+389
in 6 channels
Get PRO
May '25
+535
in 1 channels
Get PRO
April '25
+636
in 2 channels
Get PRO
March '25
+501
in 1 channels
Get PRO
February '25
+389
in 1 channels
Get PRO
January '25
+974
in 4 channels
Get PRO
December '24
+236
in 1 channels
Get PRO
November '24
+275
in 0 channels
Get PRO
October '24
+549
in 4 channels
Get PRO
September '24
+525
in 1 channels
Get PRO
August '24
+260
in 2 channels
Get PRO
July '24
+435
in 2 channels
Get PRO
June '24
+337
in 1 channels
Get PRO
May '24
+221
in 2 channels
Get PRO
April '24
+385
in 2 channels
Get PRO
March '24
+305
in 6 channels
Get PRO
February '24
+554
in 5 channels
Get PRO
January '24
+388
in 0 channels
Get PRO
December '23
+673
in 3 channels
Get PRO
November '23
+232
in 1 channels
Get PRO
October '23
+2 830
in 0 channels
Date
Subscriber Growth
Mentions
Channels
03 September+1
02 September+1
01 September+1
Channel Posts
Открылся отбор на стажировку в Т-Банк Задачи уже выложены в нашем чате (тут). Специально для участников курсов про уже мы уже выложили разбор соответствующих экзаменов. В разборе мы покажем подход к решению задач и как оформить ответ, чтобы получить высокий балл. Также на курсах будет доступно:
🔽 Курс по выходу на доход в валюте 🔽 Разбор текущей стажировки Яндекса 🔽 Гарантия оффера 🔽 Огромный банк технических вопросов 🔽 Рефералка в бигтех после защиты пет-проекта 🔽 mock-собеседования с обратной связью
📌 Вопросы и запись — менеджеру

2
Задача с собеседования в Josh Technology Дан целочисленный массив nums. Ramp в массиве nums - это пара (i, j), для которой i < j и nums[i] <= nums[j]. Ширина такого ramp равна j - i. Верните максимальную ширину ramp в nums. Если в nums нет ramp, верните 0. Пример 1: Input: nums = [6,0,8,2,1,5] Output: 4 Explanation: Максимальная ширина ramp достигается при (i, j) = (1, 5): nums[1] = 0 и nums[5] = 5. Пример 2: Input: nums = [9,8,1,0,1,9,4,0,4,1] Output: 7 Explanation: Максимальная ширина ramp достигается при (i, j) = (2, 9): nums[2] = 1 и nums[9] = 1. Ограничения: 2 <= nums.length <= 5 * 10⁴ 0 <= nums[i] <= 5 * 10⁴ НАШ ЧАТ АЛГОРИТМИСТОВ Решение Необходимо найти такую пару индексов (i, j), где i < j и nums[i] <= nums[j], при этом индексы должны быть максимально удалены друг от друга. Для решения используем монотонный стек (стек, элементы которого хранятся в строго возрастающем или строго убывающем порядке) и два прохода по массиву. В данном случае стек будет хранить индексы, упорядоченные по значениям nums[i]: значения по индексам в стеке будут образовывать строго убывающую последовательность. При добавлении нового эл-та алгоритм будет сравнивать его с вершиной стека. В результате двух проходов: - Первый проход (слева направо): находим кандидатов на левую границу (i). - Второй проход (справа налево): для каждого кандидата ищем максимально удалённую правую границу (j). Пройдем по алгоритму: stack - стек для хранения индексов-кандидатов на левую границу (ищем максимально "низкие" значения). Итерируемся по nums слева направо: Если стек пуст или текущее значение меньше значения на вершине стека: - добавляем индекс текущего эл-та в стек. Ищем правую границу, идя от конца массива к началу, чтобы максимизировать расстояние между парами. Для каждого j проверяем, подходит ли он для левых кандидатов из стека: Пока стек не пуст и левая граница <= правой границы (из условия: nums[i] <= nums[j]): - вычисляем ширину пары и обновляем результат на максимально возможный. Возвращаем res. Сложность O(n) - по времени (каждый индекс может быть добавлен в стек не более одного раза и удалён не более одного раза) O(n) - по памяти (в худшем случае стек будет содержать все n индексов). Код class Solution: def maxWidthRamp(self, nums: List[int]) -> int: stack = [] res = 0 n = len(nums) for i, num in enumerate(nums): if not stack or nums[stack[-1]] > num: stack.append(i) for j in range(n)[::-1]: while stack and nums[stack[-1]] <= nums[j]: res = max(res, j - stack.pop()) return res @algoses
1 418
3
Через 2 часа начинаем вебинар про ИИ-агентов 👀 Вебинар ведёт AIOps-инженер из WB, который сам работает с агентными системами
Через 2 часа начинаем вебинар про ИИ-агентов 👀 Вебинар ведёт AIOps-инженер из WB, который сам работает с агентными системами и может нормально рассказать, как это выглядит в реальных задачах. Так что если у вас накопились вопросы про агентов, приносите их на вебинар. Особенно если уже работаете в backend / ML / аналитике / разработке и думаете, стоит ли докручивать этот навык. Стартуем сегодня в 12:00 мск. Ссылка: https://telemost.yandex.ru/live/b351da7fb10d48d98ae931f2f505284d
367
4
Яндекс приглашает школьников на бесплатные Кружки по математике, программированию и ИИ Кружки открыты для школьников 5–11 кла
Яндекс приглашает школьников на бесплатные Кружки по математике, программированию и ИИ Кружки открыты для школьников 5–11 классов, а занятия ведут преподаватели с опытом участия в олимпиадах, работы в жюри и подготовки сборных. Программа рассчитана на учебный год (с сентября по май) и построена на сочетании лекций, семинаров, тематических контестов, пробных олимпиад и зачётов и дистанционных туров. Всего три направления: 🔸Олимпиадное программирование (6–11 классы). Углублённое изучение алгоритмов и структур данных. 5 параллелей с разными уровнями сложности — для начинающих и продвинутых олимпиадников. Регистрация уже заканчивается. 🔸Олимпиадная математика (5–11 классы). Программа включает алгебру, геометрию, комбинаторику, теорию чисел. Есть базовый трек для уверенного освоения и профильный для подготовки к заключительным этапам ВсОШ и перечневым олимпиадам. 🔸Искусственный интеллект (8–11 классы). В курсе: Python, анализ данных, нейросети, большие языковые модели и подготовка к профилю ВсОШ по искусственному интеллекту. Обучение бесплатное. Успейте подать заявки: до 30 августа — на олимпиадное программирование, до 6 сентября — на Кружок по ИИ и олимпиадную математику.
2 156
5
Выходим на новый уровень с линейкой 1️⃣1️⃣1️⃣ Товарищи, если база уже есть, то следующий шаг — углубиться в специализацию, за
Выходим на новый уровень с линейкой 1️⃣1️⃣1️⃣ Товарищи, если база уже есть, то следующий шаг — углубиться в специализацию, закрыть пробелы, освоить новые инструменты и стать сильнее как специалист. Для этого мы запускаем ПРО — углублённые карьерные курсы для тех, кто хочет качать карьеру и заработок! Для записи и вопросов — пишите менеджеру 📎Курсы ПРО подойдут тем, кто: — уже знает основы и хочет глубже разобраться в своей специализации — хочет перейти с junior на middle и расти дальше — готовится к собеседованиям на более сильные позиции — хочет сменить роль и добрать недостающие навыки — уже на старте имеет сильную базу и хочет целиться выше стажёрских и junior-позиций ➡️Действует гарантия: прошел курс, выполнил все рекомендации, но не получил оффер — вернем деньги ➡️Курс длится 6 недель: теория, практика, домашние задания и пет-проект. Всё это время рядом преподаватель и куратор. Открываем сразу 5 направлений: ➡️Аналитика ПРО Продвинутый SQL, A/B-тесты, эконометрика, Causal Inference и ML. ➡️ML ПРО Вывод модели в прод, MLOps, рекомендательные системы, ранжирование, uplift и динамическое преобразование. ➡️Backend ПРО Многопоточка, System Desgin, Микросервисы, базы данных, кеширование, мониторинг и распределённые системы. ➡️Алгоритмы ПРО Продвинутые алгоритмы и задачи для сложных технических интервью в hft фонды, faang+, для олимпиад и контестов. ➡️ИИ-агенты ПРО Будем разбираться не просто в LLM. Вы научитесь проектировать полноценные агентные системы и за курс соберём 5 собственных AI-агентов и пройдём весь путь от архитектуры и инструментов до работы с RAG, multi-agent системами, MCP, evals и деплоем. В программу всех курсов войдет: 🔵закрытый банк вопросов с интервью топовых бигтехов 🔵разбор ближайшей стажировки в Т-банк и Яндекс 🔵mock-собеседования с обратной связью 🔵рефералка в бигтех после защиты пет-проекта 🔵карьерная стратегия: резюме, поиск вакансий, подготовка к HR секциям 💰Бонус для всех записавшихся до 23.08 — курс про поиск валютной удалёнки и работы за рубежом в подарок
1 277
6
Зачем нужны продвинутые алгоритмы Идут последние часы скидки на наши курсы ПРО. Самое время обсудить, зачем нужен наш курс алгоритмы про. ➡️ Записаться Олимпиады и магистратуры Почти на любую школу/стажировку/магистратуру вы пишете контесты, уровень этих контестов меняется каждый год, уже в последнем контесте яндекса на стажировку вы можете увидеть продвинутые оптимизации ДП и MITM. Во всякие ШАДы и так понятно, что контесты требуют высокой подготовки и большой насмотренности по алгоритмам. А также всё чаще встречаются ивенты/олимпиады для студентов (например yandex cup/турниры от fonbet/чемпионат от мтс) и старше по олимпиадному программированию, за которые можно получать денежные призы/бви в магистратуры/ фасттреки в сильнейшие бигтехи или хфт конторы. FAANG+ В зарубежные компании куда сложнее отбор, зачастую там отбор состоит из 3-4 собеседований, а пару алгоритмических тем не хватит чтобы пройти эти собеседования. Там значительно объемнее алгоритмический багаж, который требуется для решения задач, и даже умения решать хард задачи на литкоде не хватит на проход. Например наш выпускник Максим (отзыв на сайте) прошел все этапы собеседования в гугл и уже окончил intern swe стажировку с зарплатой 8000$ в месяц. На самом собеседовании он как-раз решал задачу на битовый бор, который мы разбирали на первом уроке. Computer Science У многих компаний бигтеха есть свои лаборатории, в которые они направляют задачки, возникшие в процессе разработки в проде, которые не имеют решений в настоящее время. Например в т-банке есть лаборатория cs, где работает один из наших учеников Игорь. Что оптимизирует: курьеры получают на день некоторое количество заказов, а компания должна придумать сразу оптимальное разбиение всех заказов по курьерам и их маршруты так, чтобы минимальное количество топлива было затрачено на их сумму минимальных путей (почти что TSP задача). Лаборанты по большому счету работают там над теорией алгоритмов, придумывают эффективную идею и тестируют её на синтетических данных, а уже потом предложенную идею отправляют в прод. Здесь полноценный ресерч, вы должны не просто уметь хорошо решать задачи, но и должны знать большое количество алгоритмов и идей. HFT Даже в фонды среднячки нужна серьезная алгоритмическая подготовка, недавно мы узнали, что наш ученик Артем (смотрите на сайте), как раз устроился через пару месяцев после курса по алгосам в Fast Forward. А ранее ему дали задачу на собеседовании в Spectral рейтинга 2000 на кфе, и эту секцию он легко прошел. В хфт есть несколько направлений SWE, QR и Trader. На каждое из этих направлений нужны очень сильные алгоритмы. Отчасти стэк технологий трейдера и задачи его покрывают qr и swe, поэтому рассмотрим потребность в алгоритмах от его лица. Всё сказанное про ML и Бэк верно и для него, но только требуется еще более глубокое понимание всего. Например здесь же уже нужно понимать как реализованы внутри модели, какие структуры они используют, как их оптимизировать, а также и сами нюансы внутренние у реализаций библиотек. Здесь также и требуется иметь навыки бэкендера, но тут уже нужно глубокое понимание языка (чаще всего плюсов) на уровне количества инструкций в той или иной среде для какой-либо операции, а также нужно отлично знать алгоритмы и уметь их применять (последнее вдвойне ценится). Тут уже зачастую недостаточно придумать асимптотически наилучшее решение, нужно искать кучу неасимптотических оптимизаций для частных случаев данных. Подписаться: @algoses
2 977
7
Задача с собеседования в Persistent Systems Инвертирование бита числа x - это выбор какого-либо бита в двоичном представлении числа x и изменение его значения с 0 на 1 или с 1 на 0. Например, для x = 7 двоичное представление - 111, и мы можем выбрать любой бит (включая ведущие нули, которые не показаны) и инвертировать его. Мы можем инвертировать первый бит справа, чтобы получить 110, инвертировать второй бит справа, чтобы получить 101, инвертировать пятый бит справа (ведущий ноль), чтобы получить 10111, и так далее. Даны два целых числа start и goal. Верните минимальное количество инвертирований битов, чтобы преобразовать start в goal. Пример 1: Input: start = 10, goal = 7 Output: 3 Explanation: Двоичное представление 10 и 7 - это 1010 и 0111, соответственно. Мы можем преобразовать 10 в 7 за 3 шага: - Инвертировать первый бит справа: 1010 -> 1011. - Инвертировать третий бит справа: 1011 -> 1111. - Инвертировать четвёртый бит справа: 1111 -> 0111. Можно показать, что преобразовать 10 в 7 менее чем за 3 шага невозможно. Следовательно, возвращаем 3. Пример 2: Input: start = 3, goal = 4 Output: 3 Explanation: Бинарное представление 3 и 4 - это 011 и 100, соответственно. Мы можем преобразовать 3 в 4 за 3 шага: - Инвертировать первый бит справа: 011 -> 010. - Инвертировать второй бит справа: 010 -> 000. - Инвертировать третий бит справа: 000 -> 100. Можно показать, что преобразовать 3 в 4 менее чем за 3 шага невозможно. Следовательно, возвращаем 3. Ограничения: 0 <= start, goal <= 10⁹ НАШ ЧАТ АЛГОРИТМИСТОВ Решение И вновь задачка на побитовые манипуляции. Итак, каждый бит принимает одно значение: 1 или 0. Чтобы преобразовать число start в goal, необходимо инвертировать все различающиеся в одной и той же позиции биты, а совпадающие - оставить на месте. То есть минимальное кол-во инвертирований для преобразования исходного числа в целевое = кол-ву позиций (count), в которых биты двоичных представлений этих чисел различаются. Чтобы определить различающиеся позиции, применяем оператор XOR (исключающее ИЛИ), сравнивающий два бита: - если биты одинаковые -> 0 - если биты разные -> 1 start ^ goal даёт значение, в котором единицы стоят в тех позициях, где биты различаются. Теперь посчитаем кол-во единиц в значении xor, используя побитовый И: - только если оба бита равны 1 -> 1 - иначе -> 0 Пока xor больше 0 (есть хотя бы одна единица): - xor & (xor - 1): При (xor - 1) получаем новое число, в котором самая правая единица инвертируется в ноль, все нули справа от неё - в единицы, а биты слева - не изменяются. Затем при операции побитового И(&) между этим новым значением и исходным числом: Биты слева не меняются, так как одинаковы в обоих числах; Самая правая единица обнуляется; Все биты справа остаются нулями. Таким образом, удаляется ровно одна правая единица. - на каждой итерации увеличиваем count (кол-во единиц в xor) на 1. Возвращаем count, хранящее кол-во единиц в xor, а значит, минимальное кол-во инвертирований битов. Сложность O(k) - по времени (где k - кол-во единиц в xor) O(1) - по памяти (храним переменные count и xor) Код class Solution: def minBitFlips(self, start: int, goal: int) -> int: count = 0 xor = start ^ goal while xor: xor = xor & (xor - 1) count += 1 return count @algoses
3 790
8
Успейте подать заявку на E-CUP 2026 Students от Ozon Tech до 30 августа 🎓 В этом сезоне — только для студентов. Будет интере
Успейте подать заявку на E-CUP 2026 Students от Ozon Tech до 30 августа 🎓 В этом сезоне — только для студентов. Будет интересно тем, кто изучает ML / DS / big data / аналитику данных. Сможете ускорить модель по поиску дубликатов на 20%? Получится создать классификатор для модерации товаров? Сумеете предсказать поведение покупателя? Как минимум — попробуете и получите фидбэк от тех, кто делает это в Ozon Tech каждый день. Как максимум — разделите призовой фонд в 7 200 000 ₽ в торжественной атмосфере конференции E-CODE. Нетривиальные задачи, нетворк с ведущими специалистами индустрии, кастомный мерч и шанс масштабно усилить портфолио — это про E-CUP 2026 Students. Больше подробностей и регистрация ↩️
1 837
9
Задача с собеседования в OYO Напишите функцию для поиска наибольшего общего префикса среди массива строк. Если общего префикса нет, верните пустую строку "". Пример 1: Input: strs = ["flower","flow","flight"] Output: "fl" Пример 2: Input: strs = ["dog","racecar","car"] Output: "" Explanation: У входных строк отсутствует общий префикс. Ограничения: 1 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i] состоит только из строчных английских букв, если эта строка не пуста. НАШ ЧАТ АЛГОРИТМИСТОВ Решение Основная идея: общий префикс не может быть длиннее самой короткой строки. Находим её через функцию min. shortest - самая короткая строка. Внешним циклом проходим по индексам и символам shortest, внутренним циклом - по строкам массива, проверяя, что у всех строк на этой же позиции стоит тот же символ: Если встречаем несовпадение: выходим из цикла и возвращаем срез shortest[:i], состоящий из накопленного с прошлых итераций префикса; Если все символы совпали: возвращаем shortest целиком, как общий префикс. Сложность O(n * m) - по времени (где n - кол-во строк в массиве, а m - длина самой короткой) O(1) - по памяти (храним переменную shortest) Код class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not strs: return "" shortest = min(strs, key=len) for i, char in enumerate(shortest): for word in strs: if word[i] != char: return shortest[:i] return shortest @algoses
3 652
10
🔴 Поздравляем медалистов IOI 2026! И рассказываем в карточках, кто получил медаль и кто помогает школьникам пройти путь от д+8
🔴 Поздравляем медалистов IOI 2026! И рассказываем в карточках, кто получил медаль и кто помогает школьникам пройти путь от дипломов ВсОШ к победе на международной олимпиаде. 👉 Кстати, Яндекс Кружок открыл новый набор школьников на три олимпиадных направления: математика, программирование и ИИ. Преподаватели — действующие призёры и победители ВсОШ, медалисты международных олимпиад IOI, ICPC, IMC. Чтобы попасть в Кружок, нужно пройти отбор. Подробности — на сайте. 🔴 Кто представлял сборную России на IOI 2026?
3 002
11
Студенты, новость для вас: Т-технологии создали гайд для работы с крупнейшим открытым датасет T-ECD На одной из крупнейших ко
Студенты, новость для вас: Т-технологии создали гайд для работы с крупнейшим открытым датасет T-ECD  На одной из крупнейших конференций уровня A* по машинному обучению и анализу данных исследователи из Т-Технологий представили техрепорт T-ECD — обезличенного датасета, приближенного к реальным данным бизнеса е-ком. Отчет разослали руководителям академических программ и преподавателям ведущих ИТ-вузов России вместе с инструкцией и примерами использования в исследованиях и учебных проектах. В датасете 135 млрд обезличенных взаимодействий, но есть и компактная версия — с ней можно работать без мощной GPU-инфраструктуры, а для серьёзных экспериментов предусмотрены сценарии вплоть до 8 H100. Это позволит студентам тренировать модели рекомендательных систем на данных, близких к реальным бизнес-сценариям.
3 136
12
Задача с собеседования в Zeta Дан целочисленный массив nums, индексированный с 0, и целое число p. Найдите p пар индексов массива nums так, чтобы максимальная разность среди всех этих пар была минимальна. Гарантируется, что ни один индекс не используется более одного раза среди всех p пар. Обратите внимание, что для пары элементов с индексами i и j разность этой пары равна |nums[i] - nums[j]|, где |x| обозначает абсолютное значение x. Верните минимально возможное значение максимальной разницы среди всех p пар. Максимум пустого множества считается равным 0. Пример 1: Input: nums = [10,1,2,7,1,3], p = 2 Output: 1 Explanation: Первая пара образована индексами 1 и 4, вторая - индексами 2 и 5. Максимальная разность составляет max(|nums[1] - nums[4]|, |nums[2] - nums[5]|) = max(0, 1) = 1. Следовательно, возвращаем 1. Пример 2: Input: nums = [4,2,1,2], p = 1 Output: 0 Explanation: Пусть индексы 1 и 3 формируют пару. Разность для этой пары равна |2 - 2| = 0, что является минимально возможным значением. Ограничения: 1 <= nums.length <= 10⁵ 0 <= nums[i] <= 10⁹ 0 <= p <= (nums.length) / 2 НАШ ЧАТ АЛГОРИТМИСТОВ Решение Необходимо найти минимальный x, при котором можно сформировать p пар с разностью <= x. Свойство монотонно: если можно составить p пар с максимальной разностью x, то можно и с любой разностью > x (ограничение слабее). Если нельзя с x, то нельзя и с меньшей разностью (ограничение жёстче). Существует граница между значениями, где условие выполнено, и где это невозможно. Границу можно найти бинарным поиском: будем перебирать значение x (максимально допустимую разность) в диапазоне от 0 до максимально возможной разности в массиве. Для проверки конкретного значения создаём функцию can_form_pairs(max_diff), где max_diff - текущий кандидат на максимально допустимую разность в паре. Используя жадный алгоритм, проверяем, можно ли сформировать p пар. pairs - счётчик пар i - текущий индекс Проходим по массиву: - Если разность между соседними числами (i и i+1) <= max_diff: засчитываем пару и пропускаем использованный эл-т: i += 2; - Иначе: пропускаем текущий эл-т: i += 1. Жадный выбор оптимален: - Если разность подходит: если не взять пару (i, i+1), nums[i] не сможет образовать пару с кем-либо ещё - эл-ты правее i+1 дадут разность больше. Формируя пару (i, i+1), i+1 теперь не сможет составить пару с i+2, но разность в этой паре была бы не меньше текущей. Значит, общее кол-во возможных пар не уменьшается. - Если разность не подходит: nums[i] не сможет сформировать пару - разность с любым последующим эл-м ещё больше. Если сформировали p пар - max_diff допустим: True. Иначе: False. Применяем бинпоиск на предварительно отсортированном массиве. В отсортированном массиве оптимальные пары всегда состоят из соседних эл-в. Диапазон: от left = 0 до right = nums[-1] - nums[0] Пока left < right: - вычисляем середину; - проверяем середину с помощью функции can_form_pairs(mid): если True: текущее ограничение выполнимо, пробуем уменьшить: right = mid. иначе: слишком маленькое, left = mid + 1. Возвращаем left со значением искомого минимума. Сложность O(n log n + n log m) - по времени (сортировка - O(n log n), бинпоиск - O(log m) итераций (где m - разность между максимумом и минимумом), на каждой - проверка за O(n)) O(1) - по памяти (храним некоторое кол-во переменных) Код class Solution: def minimizeMax(self, nums: List[int], p: int) -> int: def can_form_pairs(max_diff: int) -> bool: pairs = 0 i = 0 while i < len(nums) - 1 and pairs < p: if nums[i+1] - nums[i] <= max_diff: pairs += 1 i += 2 else: i += 1 return pairs >= p nums.sort() left = 0 right = nums[-1] - nums[0] while left < right: mid = (left + right) // 2 if can_form_pairs(mid): right = mid else: left = mid + 1 return left @algoses
2 608
13
Как разогнать карьеру до уровня СЕО? 🏎 С помощью программы «Мини-СЕО»: здесь можно попасть в команду топ-менеджера Т-Банка и
Как разогнать карьеру до уровня СЕО? 🏎 С помощью программы «Мини-СЕО»: здесь можно попасть в команду топ-менеджера Т-Банка и получить опыт, который нельзя нагуглить. У каждого участника будет свое направление, где он сможет: — развивать сегмент автолюбителей и заниматься региональной экспансией Т-Банка с Жорой Сукасяном; — вести стратегический план развития 3P, развивать AI-продукты и искать, где AI может упростить работу команды, c Денисом Коротовым; — разрабатывать эффективные методологии для оценки влияния продукта на экосистему с Владимиром Любимовым; — исследовать экосистемы и находить наиболее перспективные точки роста с Максимом Безруковым; — участвовать в создании B2B-маркетплейса c Владимиром Абазовым. Программа длится шесть месяцев. Никакой скучной теории, работаем над стратегическими проектами по 40 часов в неделю. Подойдет студентам и джуниор-специалистам, которые уже умеют в математику и аналитику. Подать заявку можно до 25 сентября
2 087
14
Задача с собеседования в Zomato Дан целочисленный массив nums, в котором ровно два элемента встречаются только один раз, а все остальные элементы встречаются ровно два раза. Найдите два элемента, которые появляются только один раз. Вы можете вернуть ответ в любом порядке. Вы должны написать алгоритм, который работает за линейное время и использует только константное дополнительное пространство. Пример 1: Input: nums = [1,2,1,3,2,5] Output: [3,5] Explanation: [5, 3] - также валидный ответ. Пример 2: Input: nums = [-1,0] Output: [-1,0] Пример 3: Input: nums = [0,1] Output: [1,0] Ограничения: 2 <= nums.length <= 3 * 10⁴ -2³¹ <= nums[i] <= 2³¹ - 1 Каждое число в nums встретится два раза, только два числа встретятся один раз. НАШ ЧАТ АЛГОРИТМИСТОВ Решение Более сложный вариант задачи на использование побитового оператора XOR (исключающего ИЛИ), сравнивающего два бита: - если биты одинаковые -> 0 - если биты разные -> 1 Применяем XOR для "обнуления" всех чисел в массиве, которые встречаются два раза, используя свойства: a ^ a = 0 и a ^ 0 = a. Предварительная сортировка не требуется, так как a ^ b = b ^ a. - проходим по массиву nums, накапливая XOR всех эл-в. Таким образом, получим XOR = a ^ b, где a и b - искомые числа. Теперь у нас есть некоторое значение XOR, хранящееся в двоичном виде. Предлагаю разобрать подробнее на примере 1: после первого прохода XOR = 3 ^ 5 = 6. В двоичном виде это выглядит следующим образом: 3 = 0 1 1 5 = 1 0 1 6 = 1 1 0 Единицы находятся в тех разрядах, где биты у a и b различаются => можем использовать какой-либо из этих разрядов в качестве разделителя. Найдём самый младший единичный бит с помощью цикла while: Пока XOR & diff_bit равно нулю: - ищем единичный бит, перебирая битовые позиции справа налево с помощью переменной diff_bit, сдвигая единицу из младшего разряда в старший. На примере XOR = 6 (110): diff_bit = 1 (001): 110 & 001 = 0 diff_bit = 2 (010): 110 & 010 = 2 => нужный бит найден - второй разряд справа. Также для нахождения младшего единичного бита-разделителя можно было бы использовать формулу: diff_bit = xor & -xor (рекомендую почитать о «дополнительном коде»). Таким образом, зная разделяющий бит, можем использовать его для распределения чисел по двум группам. Проходим по массиву nums, проверяя для каждого числа: - если diff_bit & текущее число не равно нулю => у числа стоит 1 в том же разряде, что и у diff_bit; - иначе => стоит 0. Уникальные числа a и b различаются в выбранном бите, а значит, попадут в разные группы. Парные же числа, имея одинаковые биты, попадут в одну и ту же группу и «обнулятся» при операции XOR. В каждой группе останется одно искомое число. Выводим найденные числа в виде массива. Сложность O(n) - по времени (проходим двумя циклами по n элементам) O(1) - по памяти (храним целочисленные переменные xor, diff_bit, a, b) Код class Solution: def singleNumber(self, nums: List[int]) -> List[int]: xor = 0 for n in nums: xor ^= n diff_bit = 1 while not(xor & diff_bit): diff_bit = diff_bit << 1 a, b = 0, 0 for n in nums: if diff_bit & n: a = a ^ n else: b = b ^ n return [a, b] @algoses
1 803
15
Video message
950
16
У России три пути: 18+, ***** и IT И кажется, у нас случился переход между карьерными треками… Нам неважно, какой у человека бэкграунд и чем он занимался раньше. Важно, куда он хочет прийти и что готов для этого делать. Наша студентка, Алина, решила кардинально сменить сферу, пришла на «СТАРТ» и теперь готовится к своей новой цели — получить оффер в Яндекс. Можно следить за успехами и учиться вместе с Алиной. На наши курсы старт, идут финальные 4 часа скидки. ➡️ Записаться
944
17
Нужны ли алгоритмы сейчас, в эпоху ИИ, на собесах До 2025 года из каждого утюга вы слышали про эти "алгособесы". Любой отбор в школы, на стажировки или штатные позиции обязательно выглядел как школьная олимпиада по программированию. А основная подготовка к выходу на работу заключалась в нарешивании Литкода. Почему так происходило Оценить весь огромный стек технологий за часовое собеседование - нереально. Почти любая рабочая задача в бигтехе, которая проверяет твой реальный уровень, занимает минимум неделю работы. Очевидно, в часовой формат такое не укладывается, поэтому для оценки кандидата пошли по иному пути: 1. рассказ про опыт и свои харды; 2. решение брейн-тизеров и алгоритмических задач. По первому пункту кандидат, конечно, может обмануть, если хорошо проработает легенду. Но обычно таких ребят быстро ловят - им не хватает скиллов, чтобы придумать качественную и непротиворечивую историю. А вот вторым пунктом выступили алгоритмы, которые идеально подходят сразу для аналитики, ML и бэкенда. Во всех этих направлениях так или иначе присутствует написание кода, а алгоритмический аппарат дает незаменимый навык быстро рефакторить код и видеть его структуру. А что сейчас Некоторые компании отказались от отдельных алгособесов, но оставили задачки в других секциях (livecoding). Однако в крупных бигтехах алгосекция все так же существует. Более того, в зарубежных вакансиях алгоритмические секции сейчас, наоборот, снова в тренде. Чем обусловлен небольшой спад тренда? Компании перегрели кандидатов: на секциях стали спрашивать слишком простые задачки, которые при хорошей подготовке никак не отражают объективно твое умение строить алгоритмы. По сути, их можно просто "зарешать" количеством, и на собесе ты решишь задачу не потому, что придумал решение, а потому что встречал похожую идею раньше. Но альтернативу алгосам так и не придумали. Давать математический брейн-тизер бэкендеру странно, а усложнить алгозадачу до уровня, где нельзя натренировать типовые паттерны - перебор, ведь это лишь метод проверки мышления, спрашивать вкатуна систем дизайн- ту мач. Главный вывод. Алгоритмический аппарат в эпоху LLM станет как никогда актуальным. Ваша задача на работе будет сводиться к тому, чтобы быстро валидировать код, написанный нейросеткой. Это значит, что вам нужно моментально разбираться в чужом коде и видеть узкие места. Именно такие навыки и тренируют алгоритмические задачки. Поэтому не стоит надеяться, что алгосы пропадут с рынка. В будущем это будет наиболее актуальный и надежный инструмент проверки твоего инженерного мышления. Что с этим делать и как подготовиться Если вы готовитесь к собеседованиям, важно понимать: алгоритмы - это не про запоминание 500 задач, а про тренировку шаблонов мышления. Чтобы решать задачи за 20 минут, нужно не заучивать код, а видеть структуру задачи сходу. Но просто читать про это недостаточно. Чтобы выйти на алгособес уверенно, нужна системная практика с разбором реальных кейсов. Если хотите оставаться в тренде IT-рынка и его жестких требований, советую наши курсы «Старт». У нас есть отдельный курс по алгоритмам, разбор реальных задач с собеседований в топ-компаниях и подходы, которые учат именно думать, а не зубрить. Специально для подписчиков канала мы продлили финальные скидки на обучение на 24 часа. Если давно хотели прокачать свой алгоритмический аппарат до уровня топ-компаний, сейчас лучший момент. Это последний шанс взять комбо: алгоритмы + любой курс по специальности по хорошей цене и уже осенью залутать оффер! ➡️ Записаться Подписаться: @algoses
3 427
18
Осенний найм уже на старте! Осенью запускаются стажировки, открываются вакансии и поэтому август — лучшее время для подготовк
Осенний найм уже на старте! Осенью запускаются стажировки, открываются вакансии и поэтому август — лучшее время для подготовки: понять, что спрашивают на отборах, оценить свой уровень и закрыть пробелы до начала учебы! Поэтому не упусти финальную распродажу курсов «СТАРТ» — любой курс всего за 6 490 ₽ ➡Аналитика ➡Алгоритмы ➡Backend ➡Machine Learning Почему сейчас лучшее время присоединиться: ✔️Гибкий старт: все лекции по техническим темам уже выложены и доступны — проходите в своём темпе, а куратор остается на связи и проверит дз и проекты. ✔️Карьерный блок: онлайн-семинарам по софтам. Напишете резюме, которое пройдет скрининг, даже если нет опыта, отработаете самопрезенатицию, пройдёте mock-собеседование с обратной связью. ✔️Закрытый банк вопросов с реальных интервью Яндекса, Т-Банка, Ozon, WB, Авито и других топ-компаний. ✔️Разбор текущего отбора на стажировок Яндекса. ✔️ Реферальная рекомендация в бигтех после успешной защиты пет-проекта. Выгодное комбо: ➡️Алгоритмы + любой курс всего за 9 990 ₽⬅️ Берите Backend, ML или Аналитику и параллельно ботайте алгоритмы — они встречаются везде, без хороших алгосов не пройти отбор в хорошую компанию. 🔊 Распродажа только 8-9 августа. Подробную программу смотрите на сайте 📌Для вопросов и записи на курс напишите менеджеру
1 207
19
Школьная сборная России третий год подряд стала абсолютным чемпионом на Международной олимпиаде по искусственному интеллекту
Школьная сборная России третий год подряд стала абсолютным чемпионом на Международной олимпиаде по искусственному интеллекту IOAI-2026 Команда завоевала 8 медалей — 7 золотых и 1 бронзовую — и вновь доказала, что талант и знания открывают путь к большим победам. Отбор проходил в СберУниверситете, а к турниру IOAI ребят готовили эксперты Альянса в сфере ИИ и Центрального университета. В этом году конкуренция выросла кратно, но наши ребята снова оказались сильнейшими среди участников из более 100 стран в решении задач на самом фронтире технологий. Поздравляем победителей и приглашаем на крупнейшую в России международную конференцию AI Journey, посвященную искусственному интеллекту
4 878
20
Задача с собеседования в OpenText Дана строка num, представляющая собой большое целое число. Число считается "хорошим", если оно удовлетворяет следующим условиям: - оно является подстрокой длиной 3 в строке num - все три цифры в числе одинаковы Верните максимальное "хорошее" число в виде строки или пустую строку "", если такого числа не существует. Обратите внимание, что строка num или "хорошее" число могут содержать ведущие нули. Пример 1: Input: num = "6777133339" Output: "777" Explanation: в строке содержатся два "хороших" числа: "777" и "333". "777" больше, возвращаем "777". Пример 2: Input: num = "2300019" Output: "000" Explanation: "000"- единственное "хорошее" число. Пример 3: Input: num = "42352338" Output: "" Explanation: строка не содержит подстроку из трёх одинаковых цифр. Следовательно, "хорошего" числа не существует. Ограничения: 3 <= num.length <= 1000 Строка num состоит только из цифр. НАШ ЧАТ АЛГОРИТМИСТОВ Решение Проходим по строке окном фиксированного размера 3, проверяя на каждой позиции, состоит ли окно из трёх одинаковых символов. Выбираем максимальное из валидных окон путём лексикографического сравнения. Инициализируем переменную res, в которой будем хранить максимальную найденную подстроку, как пустую строку (первая же "хорошая" подстрока обновит res). Проходим по строке num до len(num) - 2, проверяя все возможные начальные позиции трёхсимвольной подстроки (последняя валидная позиция, с которой может начаться подстрока - len(num) - 3): Если текущий эл-т идентичен двум последующим: - обновляем res, если найденная подстрока из трёх символов (берём срез строки с индексами i, i+1 и i+2) больше текущего значения res. Возвращаем значение res. Сложность O(n) - по времени (проходим n-2 итераций, где n = len(num)) O(1) - по памяти (храним только одну переменную res) Код class Solution: def largestGoodInteger(self, num: str) -> str: res = "" for i in range(len(num) - 2): if num[i] == num[i+1] == num[i+2]: res = max(res, num[i:i+3]) return res @algoses
2 345