Вступить в клуб →
лёгкаявопросПроизводительность и низкие задержки

Удаление дубликатов из 100 тысяч идентификаторов работает полминуты

std::vector<uint64_t> unique;
for (uint64_t id : ids) {   // 100 тыс. элементов
    if (std::find(unique.begin(), unique.end(), id) == unique.end()) {
        unique.push_back(id);
    }
}

Порядок первого появления важен. На 1000 элементов код работал мгновенно, на 100 тысячах — десятки секунд. Как ускорить?

  • Проверять виденные id через unordered_set
  • Сделать unique.reserve(ids.size()) заранее
  • Заменить std::find на ручной цикл for
  • Собрать программу с флагом -O3

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела