Для отсортированного массива два указателя находят пару за O(n), но предварительная сортировка обычно даёт итог O(n log n). Если нужны исходные индексы, их необходимо сохранить до сортировки.
Оцените решение Two Sum с двумя указателями: отсортировать массив, двигать указатели с концов, сдвигать правый при слишком большой сумме и левый в противном случае. Какие у него ограничения и сложности?
Для отсортированного массива два указателя находят пару за O(n), но предварительная сортировка обычно даёт итог O(n log n). Если нужны исходные индексы, их необходимо сохранить до сортировки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для отсортированного массива два указателя находят пару за O(n), но предварительная сортировка обычно даёт итог O(n log n). Если нужны исходные индексы, их необходимо сохранить до сортировки.
При сумме выше цели уменьшают правый указатель, иначе увеличивают левый: порядок значений позволяет исключать заведомо неподходящие пары. Условие left < right запрещает использовать один элемент дважды. Сортировка меняет порядок входа либо требует копии; пары (value, original_index) добавляют память. Хеш-таблица даёт альтернативу со средним O(n) временем и O(n) памятью. Для всех пар с повторами потребуется отдельная обработка дубликатов.