Привет!
Пытаюсь решить задачу из яндекс контеста на Java 8.
Код функционально корректен, но превышает память на полмегабайта из заявленного лимита в 20Мб.
Алгоритм для слияния кучки сортированных массивов для получения одного массива:
чтение побайтно, трансформация байтов в инт (без String), и заполнение массива частотой встречаемости определенной цифры. Затем трансляция словаря частот в оутпут , тем самым получая на выходе сортированный массив, без хранения оного в памяти.
Весь код написан используя byte (где возможно), чтение из
System.in (без буферизации (предпологаю что она тоже память ест)), максимально большой объект в коде это массив int[101]. Просмотр jvisualvm показывает, что сама Java 8 отжирает много места своими стрингами, но исправить это я не могу, или не знаю как.
Посоветуйте какие оптимизации или алгоритм можно погуглить.
Стартовые параметры JVM мне недоступны, ибо код исполняется на стороне Яндекса 🙁
https://pastebin.com/D77gWYNz