**Контекст:** классическая задача на собесах в Яндекс, Сбер, Тинькофф, T-Bank, Mail.ru, Ozon. Проверяет базовое понимание алгоритмической сложности и умение выбрать правильную структуру данных.
## Условие
Дан список целых чисел `nums` и целевое число `target`. Верни **индексы двух чисел** из `nums`, сумма которых равна `target`.
**Предположения:**
- Ровно одно решение существует (не нужно искать все пары)
- Один элемент нельзя использовать дважды
- Массив **не отсортирован**
- Числа могут быть **отрицательными**
## Примеры
[см. код в задании]
## Ограничения (constraints)
- 2 ≤ len(nums) ≤ 10⁴ (до 10 000 элементов)
- -10⁹ ≤ nums[i] ≤ 10⁹
- -10⁹ ≤ target ≤ 10⁹
- Ровно одно решение существует
## Требования
1. Написать функцию `two_sum(nums: list[int], target: int) -> list[int]`
2. **Указать Big O** вашего решения (time + space)
3. Упомянуть хотя бы **один alternative подход** и почему он хуже/лучше
4. Обсудить **edge cases**
## Что ценится на собесе
- Выбор **оптимальной структуры данных** (hash map vs отсортированный массив)
- Чёткое объяснение **time/space complexity**
- Обработка **edge cases** (дубликаты, отрицательные, нет решения)
- Чистый код без дубликатов логики
algorithms hash-map two-sum big-o
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: algorithms, hash-map, two-sum, big-o.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 482 Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания