TGViewer
Алгоритмы - Собеседования, Олимпиады, ШАД Алгоритмы - Собеседования, Олимпиады, ШАД @algoses · 12.1K subscribers
Post #362 9.57K
Задача с собеседования в Яндекс

Вполне себе прикладная задача, которая может встретиться в проде.
Поисковая формулировка: для двух поисковых выдач, заданных массивами DocId-ов (векторы целых чисел) длины N, для всех k от 1 до N нужно посчитать количество общих документов в топах размера k.

Формальная формулировка: Для двух массивов целых чисел длины N, для всех k от 1 до N, посчитать количество общих чисел на префиксах длины k. Числа в пределах массива могут повторяться, пересечение считается без учета кратности.

Решение:

Пройдемся по префиксу, параллельно поддерживая два хешсета для первого и второго массива с элементами на префиксе. Когда начинаем обрабатывать новый элемент, проверяем его в хешсете второго, если есть то += 1, также для второго. При этом если элемент уже был в префиксе, то прибавлять 1 к ответу не нужно.

int n = A.size();
vector<int> result(n);
unordered_set<int> setA, setB;
int common = 0;

for (int i = 0; i < n; ++i) {
int a = A[i];
int b = B[i];

if (!setA.count(a)) {
setA.insert(a);
if (setB.count(a)) {
common++;
}
}

if (!setB.count(b)) {
setB.insert(b);
if (setA.count(b)) {
common++;
}
}

result[i] = common;
}

Если повторы внутри одного вектора запрещены, то возможно решение с одним хешсетом всех встреченных элементов двух массивов
Нужно отдельно обговорить допускаем ли мы повторы чисел внутри одного вектора. Хорошо, если вы сами спросите об этом на собесе

В результате решение O(N)


@algoses
  • ❤ 3
  • 💅 2
  • 👍 1
  • 👏 1
  • 🤔 1
More from @algoses
  1. Sep 26, 2026Ты поступишь в ШАД Старт набора на наши ШАДовские курсы: без воды и лишней теории, 3 месяц…
  2. Sep 25, 2026Как залететь в хфт и стать миллионером, залутать сочную зумершку? Обсудим в новом ролике.…
  3. Sep 23, 2026Задача с собеседования в Zoho Даны две строки s и t. Определите, являются ли они изоморфны…
  4. Sep 19, 2026Полный цикл отбора в Spectral на SWE (HFT) Недавно рассказывали про отбор в Fast Forward н…
  5. Sep 18, 2026❗️ Яндекс открыл Intern Week Offer на стажировку, где всего за неделю ты можешь получить о…
  6. Sep 18, 2026Задача с собеседования в Zeta Зима близко! Во время соревнования ваша первая задача - спро…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →