Выбор ответа Junior Задачи на Java спрашивают часто обновлено

Быстрый ввод в Java

Вопрос

Решение читает 2·10⁵ чисел через Scanner.nextInt() и не укладывается в лимит. Что исправит ситуацию?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: BufferedReader и StringTokenizer вместо Scanner. Scanner разбирает ввод регулярными выражениями и медленный на больших объёмах.

Варианты ответа

  1. BufferedReader и StringTokenizer вместо Scannerправильный ответ
  2. System.console().readLine() и split по пробелам
  3. Увеличить размер кучи -Xmx
  4. Читать числа через Integer.valueOf вместо nextInt

Разбор

Scanner разбирает ввод регулярными выражениями и медленный на больших объёмах. BufferedReader читает строками большим буфером, StringTokenizer дёшево режет по пробелам: ускорение в разы. Консоль недоступна при перенаправленном вводе и не быстрее. Память тут не узкое место. Integer.valueOf вместо nextInt ничего не меняет, проблема в Scanner.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.