Алгоритмы - Собеседования, Олимпиады, ШАД
10.7K subscribers
63 photos
5 videos
9 files
141 links
Номер заявления регистрацию в РКН: № 5731053751

Чат: @algoses_chat

По всем вопросам: @vice22821
Download Telegram
Летний ИТ-лагерь Т1 — это не просто образовательный интенсив, а настоящий старт карьеры для студентов 3 курса бакалавриата и старше. В этом году он снова открывает двери для будущих специалистов.

Почему стоит участвовать?
Участники прошлого года уже доказали: лагерь — это мощный толчок в профессии. Вот что они говорят👇

• Александра, тестировщик, УрФУ, Екатеринбург:
«Лагерь превзошел все ожидания. Практический опыт тестирования и нетворкинг стали ключевыми для моего старта в Т1».

• Константин, backend-разработчик, НГТУ, Новосибирск:
«Организаторы создали атмосферу реальной коммерческой разработки. Когда я пришел на работу, различий почти не было — это бесценный опыт».

• Андрей, frontend-разработчик, РГРТУ, Рязань:
«Лагерь дал не только знания, но и уверенность. Мы работали над реальным продуктом — это совсем не похоже на учебу в вузе».


Регистрация на ИТ-лагерь Т1 открыта до 3 июля, онлайн-обучение стартует с 8 июля, а очные финалы пройдут в августе. Лучшие участники по итогам интервью смогут попасть на стажировку в один из крупнейших ИТ-холдингов страны.
6🔥1
Свершилось! Поступашки открывают набор на новую линейку карьерных курсов 🎉

Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

Все курсы стартует 13.07. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена 15'000р ! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁1🕊1🤨1🤓1🙈1💊1
Задача с собеседования в Яндекс

Дан список неотрицательных целых чисел, повторяющихся элементов в списке нет. Нужно преобразовать его в строку, сворачивая соседние по числовому ряду числа в диапазоны
Пример:
[1,4,5,2,3,9,8,11,0] => "0-5,8-9,11"

НАШ ЧАТ

Решение:
Сортировка плюс один проход. По времени за O(nlogn)

def compress_ranges(nums):
if not nums:
return ""

nums.sort()
result = []
start = end = nums[0]

for num in nums[1:]:
if num == end + 1:
end = num
else:
if start == end:
result.append(str(start))
else:
result.append(f"{start}-{end}")
start = end = num

if start == end:
result.append(str(start))
else:
result.append(f"{start}-{end}")

return ",".join(result)


@algoses
8
Разбор_ААА__программирование_.pdf
169.2 KB
Вот и разбор ААА алгосов! Для подготовки к собесам советую присмотреться к нашему курсу по алгоритмам.

@algoses
🔥91
Открытый банк заданий

Уже завтра стартуют наши карьерные курсы, на которые можно записаться со скидкой 35% до 06.07 включительно. В честь такого события решили поделиться частью банка реальных технических вопрос с собесов.

Подписывайтесь и делитесь с друзьями такой годнотой!
Аналитика
Машинное Обучение

Доступ к расширенной базе будет только у тех, кто приобрел курс этой серии! Но к ней можно получить доступ, просто отправив @vice22821 свое тестовое задание или собеседование.

@postypashki_old
💊54
Audio
Товарищи, напоминаю, что сегодня последний день, чтобы записаться на наши легендарные курсы по хорошей скидке 30%. Стартую они уже завтра.

Не упустите свой шанс классно прокачаться летом и залететь уже осенью на стажировку в Яндекс как наш выпускник прошлого набора (см прикрепленное интервью). Михаил сейчас работает на позиции джуниор в команде Яндекс Такси. Уверен его история просто парня из региона вас вдохновит!

[ Записаться на курсы ]
😁2🙊21
Задача с собеседования в Яндекс

Реализовать функцию fuzzy pussy search как в редакторе sublime text 3.

Для незнакомых с редактором - по факту требуется проверить, является ли первая строка подпоследовательностью второй

fuzzysearch('car', 'cartwheel') -> true

наш чат алгоритмистов

Решение:
Один проход по символам строки

def fuzzysearch(needle, haystack):
if not needle:
return True
if not haystack:
return False

i = 0 # индекс в needle
for char in haystack:
if char == needle[i]:
i += 1
if i == len(needle):
return True
return False

Асимптотика O(N)


@algoses
18🔥6😁3
Свершилось! Поступашки открывают набор на новую линейку математических курсов 🎓

Хочешь поступить в Ai Masters или топовую магистратуру? А, может, ты мечтаешь тащить собесы, но тебе не хватает фундамента? Узнал себя? Тогда записывайся у администратора на любой из курсов:

➡️ алгоритмы
➡️ теория вероятностей
➡️ линейная алгебра
➡️ математический анализ

Все курсы стартуют 28.07, все лекции выложены сразу. Наши курсы заточены на практику и конкретные задачи, вся теория будет разобрана на конкретных задачах и примерах, которые будут на экзаменах и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

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

📊 Цена очень доступная: 12'000 7'500 рублей за каждый курс. До 16.07 включительно отдаем курс со скидкой, дальше продажи по зачеркнутой цене.

Для вопросов и покупок пишем администратору и не тянем с этим: количество мест ограничено!
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Задача с собеседования в Яндекс

Дана строка из десятичных цифр (длинное число, младшие разряды расположены по младшему индексу). Написать код, который умножит это число на число 1 <= n <= 9.

Ограничения по памяти: О(1) доп памяти, т.е. надо использовать исходную строку (считаем, что возможное увеличение длины на 1 разряд не приведет к реаллокации)

наш чат алгоритмистов

Решение:
Пройдемся по строке с разрядами и столбиком умножим число на n. Поддерживаем остаток и считаем так до конца

def multiply_digit_inplace(num_str, n):
if not (1 <= n <= 9):
raise ValueError("n должен быть от 1 до 9")

num = list(num_str) # строка как список символов (можно считать, что это изменяемый массив)
carry = 0

for i in range(len(num)):
digit = int(num[i])
prod = digit * n + carry
num[i] = str(prod % 10)
carry = prod // 10

if carry:
num.append(str(carry))

return ''.join(num)

Асимптотика O(N)


@algoses
😁43
Свершилось! Поступашки открывают набор на новую линейку карьерных курсов 🎉

Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры

Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена 15'000р 9'000р при покупке до 18 июля включительно! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!

Не забываем и про линейку старт, на которую тоже только до 18.07 действует скидка 40%!

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Задача с собеседования в Яндекс

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

Требуется решение за линейное время с константой дополнительной памяти.

наш чат алгоритмистов

Решение:
Несложно заметить следующее
Если строка уже является палиндромом, то ответ всегда положительный (достаточно удалить центральный или один из центральных символов)
В противном случае, если начать проверку строки на палиндромность с левого и правого концов - можно найти первое несовпадение abcX....Ycba. Можно заметить, что в случае положительного ответа на задачу один из символов X или Y в данном несовпадении должен быть удален и что после этого палиндромом должна быть строка .....Y или X.....

Таким образом, решение задачи сводится к поиску такого несовпадения и проверки двух случаев

def can_be_palindrome_by_removing_one_char(s):
def is_palindrome_range(left, right):
while left < right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True

left, right = 0, len(s) - 1
while left < right and s[left] == s[right]:
left += 1
right -= 1

if left >= right:
return True # строка уже палиндром или можно удалить любой символ

# Проверяем два варианта: пропустить символ слева или справа
return (is_palindrome_range(left + 1, right) or
is_palindrome_range(left, right - 1))


@algoses
🔥148
Задача с собеседования в Яндекс

Дан вектор, надо удалить из него нули, сохранив порядок остальных элементов. Интересует как с использованием стандартных средств, так и без них.

наш чат алгоритмистов

Решение:
Линейно пройдемся по элементам массива, поддерживая указатель на записываемый элемент. Затем удалим лишние индексы

def remove_zeros(arr):
write = 0
for read in range(len(arr)):
if arr[read] != 0:
arr[write] = arr[read]
write += 1
# обрезаем хвост (если надо)
del arr[write:]

Асимптотика O(N)


@algoses
😁204
Задача с собеседования в Т-банк

Условие:
Определим понятие хорошей последовательности - абсолютная разница между любыми двумя элементами этой последовательности должна быть больше либо равна максимальному элементу. То есть (i, j) | a_i - a_j | > max(a[l:r+1]). Вам даётся массив длины 10^5 и требуется определить наибольшую длину хорошей подпослдеовательности.

наш чат алгоритмистов

Решение:
Очевидно, что если в подпоследовательности будет больше двух положительных элементов, то x - y > x (x = max(x, y)) верно лишь в том случае, когда y < 0. Соответственно длина последовательности будет точно хотя бы равняться количеству отрицательных элементов. При построении последовательности возьмем один положительный элемент (потому что иначе с двумя положительными не будет выполняться условие |a_i - a_j| > max(a_i, a_j) и возьмем жадно аименьший положительный. Тогда можно будет проверить, получится ли этот положительный элемент добавить в последовательность отрицательных так чтобы не нарушалось то условие (для этого достаточно перебрать наименьшую абсолютную разницу, то есть просто перебрать пары соседних в отсортированном порядке).


int n;
cin >> n;
vector<int> a(n);
int ans = 0;
for (int i = 0; i < n; i++ ){
cin >> a[i];
ans += (a[i] <= 0);
}
sort(a.begin(), a.end());
int mn = inf;
for (int i = 0; i < n; i++) {
if (a[i] > 0) {
mn = min(a[i], mn);
}
}
bool flag = (mn != inf);
for (int i = 1; i < n; i++) {
if (a[i] <= 0) {
flag &= (a[i] - a[i - 1] >= mn)
}
}
cout << ans + flag;

@algoses
🔥43
Поступашки продолжают набор на новую линейку карьерных курсов 🎉

Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры

Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена на сайте, только при покупке до 24 июля включительно скидка 40%! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!

Не забываем и про линейку старт, на которую тоже только до 24.07 действует скидка 40%!

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
3
This media is not supported in your browser
VIEW IN TELEGRAM
Реальную «фантастическую четвёрку» заметили в Сбере

Четверо талантливых школьников готовились к международной олимпиаде по информатике (IOI) в СберУниверситете. Состав национальной сборной впечатляет: победители Всероссийских олимпиад по информатике, золотые медалисты IOI прошлых лет 🔥

Руководитель тренерского штаба сборной — директор совместной образовательной программы Сбера и МФТИ «Высшая школа программной инженерии».

Сбер не только стал площадкой для установочных сборов, но и пригласил ребят на учёбу и стажировку, сертификаты на которую действуют в течение 5 лет.

Теперь наша «фантастическая четвёрка» отправится в Боливию, где школьники продемонстрируют свои силы и знания. Верим в ребят и желаем успехов 💚
🔥158👍6🙈2
Бесплатные занятия для школьников по ИТ

Приглашаем на Demo Days — цикл открытых занятий от преподавателей ЦУ по разработке, машинному обучению, продакт-менеджменту и аналитике.

Вы сможете:
— поучаствовать в реальных практиках профессий: от анализа данных до создания цифровых продуктов;
— почувствовать себя студентом: один из дней можно пройти очно в кампусе ЦУ;
— получить до +30% к гранту за выполненные домашние задания.

Занятия проходят очно и онлайн, вы можете присоединиться в любой момент до 6 августа

Для учеников 10-х и 11-х классов. Регистрируйтесь по ссылке!

Реклама. АНО ВО "Центральный университет", ИНН 7743418023, erid: 2RanykhxyCm
1
Cтарт новой линейки математических курсов уже завтра🎓

Хочешь поступить в Ai Masters или топовую магистратуру? А, может, ты мечтаешь тащить собесы, но тебе не хватает фундамента? Узнал себя? Тогда записывайся у администратора на любой из курсов:

➡️ алгоритмы
➡️ теория вероятностей
➡️ линейная алгебра
➡️ математический анализ

Все курсы стартуют 28.07, все лекции выложены сразу. Наши курсы заточены на практику и конкретные задачи, вся теория будет разобрана на конкретных задачах и примерах, которые будут на экзаменах и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

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

📊 Цена очень доступная: 12'000 7'200 только до 26.07 включительно, дальше продажи по зачеркнутой цене.

Для вопросов и покупок пишем администратору и не тянем с этим: количество мест ограничено!
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Экзамены в Т-академию до 31 августа. Усеваем подать заявку. Академия открывает возможность стажировки или устройства в штат.

Задания на все направления здесь. Там же можно их обсудить вместе с админом 😎😎

@code_of_art
🔥5👍21
Задача с собеседования в лабораторию Т-банка

Задача:
Нам даны две последовательности A и B из 0 и 1 (длиной до 10^6). У вас есть две операции:
1. Выбрать последовательность и поменять местами элементы на позициях (i, j) - стоимость такой операции будет |i-j|
2. Выбрать элемент последовательности и поменять значение бита на противоположное, стоимость в таком случае будет 1
Требуется за минимальную стоимость сделать последовательности равными

наш чат алгоритмистов

Решение:
Заметим, что операцию 1 нет смысла использовать когда |i - j| > 1, а выигрышь стоимости в 1 достигается только при |i - j| = 1. Тогда можно решать задачу с помощью dp, dp_i - минимальный ответ для того чтобы сделать префиксы последовательностей длинной i равным.
Тогда пересчёта будет два:
Первый - это прийти в состояние i, воспользовавшись операцией 2 и тогда стоимость для префикса длины будет считаться как dp{i-1} + (a[i] != b[i])
Второй - это воспользоваться операцией 2 и поменять символы на позициях (i - 1, i), но в таком случае нужно проверить, что строки станут равными после этой операции (если быть точнее, то префиксы строк).

int n;
cin >> n;
string a, b;
cin >> a;
cin >> b;
vector<int> dp(n + 1, 0);
for (int i = 1; i <= n; i++) {
dp[i] = dp[i - 1] + (a[i - 1] != b[i - 1]);
if (i >= 2 && a[i - 2] == b[i - 1] && a[i - 1] == b[i - 2]) {
dp[i] = min(dp[i], dp[i - 2] + 1);
}
}
cout << dp[n] << '\n';


@algoses
🔥101