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

Дан массив целых чисел, нужно найти непустой подотрезок (непрерывную подпоследовательность) с заданной суммой X, либо сказать, что это невозможно.

Для найденного отрезка (если он существует) следует выдать на выход индексы его концов.

Решение:

Частичные суммы, далее два варианта:
1) Сортировка / std::map, решение за O(nlogn)
2) Хешмапа, решение за O(N)

unordered_map<long long, int> sum_map;
sum_map[0] = -1;
long long sum = 0;

for (int i = 0; i < nums.size(); ++i) {
sum += nums[i];
auto it = sum_map.find(sum - X);
if (it != sum_map.end()) {
return {it->second + 1, i};
}
if (!sum_map.count(sum)) {
sum_map[sum] = i;
}
}

return {-1, -1};

Что нужно учитывать:
1) В массиве могут быть отрицательные числа
2) Подотрезок должен быть непустой

Хорошо, если вы скажете про переполнение и что перфиксная сумма может не поместиться в int

Итоговое решение O(N)


@algoses
  • 🔥 10
  • ❤ 5
  • 💊 2
  • 👍 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 →