Правильно ли я понимаю суть? Проблемы именно с поиском максимального числа повторов. Я должен создать List, куда я буду записывать байты. Далее я должен пройтись по этому List и если я нахожу байты, которые равны друг другу, то записываю их в другой List, ну и вывожу их через цикл.
Semyon Baryshnikov
30 уровень
Правильно ли я понимаю суть?
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #3303140
9 октября 2023, 08:35полезный
Если прикреплять к вопросу задачу, то будет более очевидно, в чём у тебя проблемы.
Наверняка можно решать через списки, но вряд ли будет оптимально. Для чего тебе нужен второй список мне неочевидно. Да и в целом не очень ясно, как ты хочешь вести этот список. Вот положим у тебя в исходнике есть три байта: 0x5, 0x7, 0x5. Что ты с ними хочешь сделать, просто поместить в список List<Integer>: {5, 7, 5}? Тогда этот список хранит не количество байтов, а сами байты. А если посчитать байты и поместить в список их количество, то как связать количество (2, 1) с самими байтами (5, 7 соответственно)?
Тогда уж тут уместнее мапа, где ключ - это байт, а значение - соответствующее количество. Будет работать, но не слишком рационально.
Уместнее использовать массив, потому что в такой мапе ключами могут быть числа из отрезка [0; 255] - это то, что в состоянии вернуть тебе метод read (помимо -1). Соответственно, если завести массив длиной 256 элементов, то индексы у него будут тоже принадлежать этому отрезку, а значением элемента массива (как и значением элемента мапы) будет соответствующее количество прочитанных байтов. По умолчанию пустой массив заполнен нулями, что соответствует тому, что никаких байтов ещ прочитано не было до того, как ты начнёшь заполнять массив.
+2
Semyon Baryshnikov QA Automation Engineer
9 октября 2023, 08:42
Спасибо, попробую написать через массив.
0
Semyon Baryshnikov QA Automation Engineer
9 октября 2023, 09:03
Опять возник вопрос. Могу ли я сделать так? Записал в массив байты, потом я пройдусь по этому массиву и сравню его элементы, каких элементов будет больше, такие и выведу. Каша в голове просто. Но как вот сравнить эти элементы, я же не могу сравнить array[i] == array[i + 1]
0
Денис Enterprise Java Developer
9 октября 2023, 09:26
Ну ты же можешь найти максимальное число в массиве из чисел? Если ты правильно реализовал byte frequency array, то индексами у тебя будут в нём значения байта, а значениями количество его вхождений. Вот и найди максимальное количество вхождений, в следующем цикле просто выведи все индексы значение в которых будет равно максимальному.
0
Semyon Baryshnikov QA Automation Engineer
9 октября 2023, 10:14
всё таки решил через список, но не могу понять, где ошибка
0
Semyon Baryshnikov QA Automation Engineer
9 октября 2023, 10:34
Всё, исправил, не увидел ошибку в if
0
Денис Enterprise Java Developer
9 октября 2023, 11:23полезный
А список то тут зачем? Что мешает сделать так?
+1