Выбор ответа Junior Задачи на Java спрашивают часто обновлено
Быстрый ввод в Java
Вопрос
Решение читает 2·10⁵ чисел через Scanner.nextInt() и не укладывается в лимит. Что исправит ситуацию?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: BufferedReader и StringTokenizer вместо Scanner. Scanner разбирает ввод регулярными выражениями и медленный на больших объёмах.
Варианты ответа
BufferedReaderиStringTokenizerвместоScannerправильный ответSystem.console().readLine()иsplitпо пробелам- Увеличить размер кучи
-Xmx - Читать числа через
Integer.valueOfвместоnextInt
Разбор
Scanner разбирает ввод регулярными выражениями и медленный на больших объёмах. BufferedReader читает строками большим буфером, StringTokenizer дёшево режет по пробелам: ускорение в разы. Консоль недоступна при перенаправленном вводе и не быстрее. Память тут не узкое место. Integer.valueOf вместо nextInt ничего не меняет, проблема в Scanner.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.