Почему перебор массива более эффективен, чем использование пользовательского ввода непосредственно в C++? [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
Почему перебор массива более эффективен, чем использование пользовательского ввода непосредственно в C++? [закрыто]

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/786 ... irectly-in

Вернуться в «C++»