Я работаю над проблемой HackerRank и столкнулся с проблемой производительности. Проблема описана здесь: Deque STL
В примере теста мое решение работает нормально. Однако во всех других тестовых случаях я получаю сообщение об ошибке «Превышен лимит времени». Чтобы улучшить свой код, я реализовал стратегию обновления максимального значения подмассива только в том случае, если текущего максимума больше нет в массиве, и его обновления только в том случае, если следующее значение больше текущего максимума. Несмотря на эти изменения, мне все равно не удалось пройти все тестовые примеры.
Что я пробовал:
После поиска в Интернете я нашел решение от другой пользователь. Между их решением и моим было два основных различия:
- Я использовал индекс для отслеживания максимального значения, а они использовали само значение.
- Он создал массив со всеми входными значениями и перебрал его, а я обрабатывал значения шаг за шагом по мере их ввода.
Удивительно, но когда я переключился на создание массива и перебор его , я прошел все тестовые случаи.
Мой вопрос:
Почему создание массива и итерация по нему улучшают производительность, даже если для этого требуется такое же количество операций cin, но две итерации?
Подробнее здесь: https://stackoverflow.com/questions/786 ... irectly-in