Можно ли улучшить код решения задачи с учетом сортировки?
Что проверяют
Это подсказка, а не вопрос. Интервьюер увидел решение и намекает, что предварительная сортировка меняет класс сложности. Проверяют, умеете ли вы считать, когда она окупается, и понимаете ли, что в обработке данных сортировка стоит не только процессорного времени.
Как отвечать
Сначала уточните входные гарантии: данные уже упорядочены или их придётся сортировать, и сколько раз по ним пройдут.
Если порядок уже есть, сортировка бесплатна, и открываются приёмы, которых без неё нет: два указателя, скользящее окно, бинарный поиск, слияние упорядоченных потоков, схлопывание дубликатов за один проход. Квадратичное решение обычно сводится к линейному.
Если сортировать придётся самому, это O(n log n), и цена окупается, когда задача про порядок и диапазоны: слияние интервалов, ближайшая пара, k-я порядковая статистика, группировка соседних записей. Когда задача только про равенство, множество или словарь дают O(n), и сортировка тут будет ухудшением. Ещё она выигрывает, если по одному набору пойдёт много запросов: платим один раз, дальше отвечаем логарифмом.
Для инженера данных важна вторая половина ответа. Сортировка в распределённой обработке это перемешивание по сети, самая дорогая операция в плане. Зато упорядоченные данные окупаются на чтении: в колоночных форматах у блока хранятся минимум и максимум, и по упорядоченному ключу движок пропускает целые блоки вместо чтения.
Про встроенную сортировку в Python уместно сказать, что это Timsort: устойчивая и почти линейная на частично упорядоченных данных, а именно такими приходят логи и выгрузки по времени.
Где спотыкаются
Сортируют там, где хватило бы хэш-множества, и честно ухудшают линейное решение до O(n log n), хотя интервьюер намекал совсем на другой шаг.
Забывают про устойчивость. Пересортировка по второму ключу неустойчивым алгоритмом рушит порядок, выстроенный на предыдущем шаге, и расхождение вылезает уже в витрине, а не в тесте.
Считают только время и молчат про память. Сортировка списка объектов в одном процессе упирается в оперативную память, а на больших объёмах превращается во внешнюю сортировку с записью на диск, и цена там совсем другая.