public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fis = new FileInputStream(reader.readLine());
ArrayList<Integer> list = new ArrayList<>();
while (fis.available()>0){
list.add(fis.read());
}
reader.close();
fis.close();
Map<Integer,Integer> map = new HashMap<>();
for (Integer a:list) {
map.put(a, map.getOrDefault(a, 0)+1);
}
int max = 0;
for (int a:map.values()) {
if(a>max){
max = a;
}
}
list.clear();
for (Map.Entry<Integer,Integer> entry:map.entrySet()) {
if(entry.getValue()==max)
list.add(entry.getKey());
}
for (int a:list) {
System.out.print(a + " ");
}
}
}
Как можно оптимизировать код, решая именно с помощью HashMap?
Мой вариант кажется невероятно "топорным". Александр
20 уровень
Задача решена, но как упростить код?
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
28 августа 2021, 14:00полезный
Упростить можно, решая без списка и мапы, с помощью обычного массива.
Сразу при считывании считать повторы.
+1
Ирина Алымова Java Developer в Nerdysoft
28 августа 2021, 14:08
кстати да, считать байты за индексы массива 👍
0
Ирина Алымова Java Developer в Nerdysoft
28 августа 2021, 13:54полезный
не вижу что тут можно упростить, если честно, я примерно так же решила
разве что ArrayList не обязателен
+1
Александр
28 августа 2021, 14:00
Позже тоже додумался использовать Сollections.max.
Все равно решение задачи кажется очень громоздким.
0
Александр
28 августа 2021, 14:01
@Ирина Алымова где можно почитать Вашу историю успеха?)
0
Ирина Алымова Java Developer в Nerdysoft
28 августа 2021, 14:06
История успеха будет когда будет успех 😁
0
Александр
28 августа 2021, 15:10
Ну Вы же уже работаете разработчиком?) 39 уровень - это, наверное, уже год+ стажа?)
0