Так как это задача, то решать ее нужно вам самим, но могу подсказать примерные шаги для решения этой задачи:
Вводится массив целых чисел.
1) При помощи класса Scanner на вход получаем целые числа (int) и добавляем их в массив. Можно для удобства сперва добавлять их в List, а потом из List получить Array, так как массив при инициализации бывает фиксированного размера и придется тогда пересоздавать каждый раз массив. Легче при вводе числа из консоли добавлять их в список
List<Integer>
, а затем уже из списка получить массив чисел.
Найти позицию второго с конца элемента, который встречается в массиве наиболее часто.
2) Для этого сперва нужно создать
Map<Integer, Integer> (Map<Число, Кол-во>)
Второй элемент из конца массива находится при помощи
int numIndex = arr.length - 1
, а само число можно найти через
int num = arr[numIndex]
Если это число имеется в массиве более 2-х раз, то с конца массива нужно посчитать встречаемость элементов равных данному элементу. Когда дойдете до 2-х это будет вашим ответом на задачу.
Если нужно найти наиболее часто встречающийся элемент, то можете попробовать создать
Map<Integer, Integer>
key = число хранимое в массиве value (count) его количество (сколько раз он встречается в массиве).
Если несколько значений встречаются в массиве одинаковое кол-во раз выбрать наибольший по абсолютному значению,
3) Если value (count) из Map совпадает с другим value, то выбрать наиболшее значение key.
Т.е. допустим в Map у вас число 4 встречается 10 раз и число 5 встречается 11 раз, то выбираем число 5.
Если такого элемента нет (все элементы массива разные), то вернуть -1.
4) Если в массиве нет одинаковых чисел, то возвращаем -1
Примерно, как-то так...