Вы можете подсчитать вхождения разных чисел, а затем искать самый высокий. Это пример, который использует карту, но может быть легко адаптирован к встроенным массивам.
Второй по величине элемент: возьмем пример: [1,5,4,2,3] в этом случае, Второй наибольший элемент будет 4.
private static int getMostOccuringElement (int [] A) {Map occuringMap = new HashMap ();
//count occurences
for (int i = 0; i < A.length; i++) {
if (occuringMap.get(A[i]) != null) {
int val = occuringMap.get(A[i]) + 1;
occuringMap.put(A[i], val);
} else {
occuringMap.put(A[i], 1);
}
}
//find maximum occurence
int max = Integer.MIN_VALUE;
int element = -1;
for (Map.Entry<Integer, Integer> entry : occuringMap.entrySet()) {
if (entry.getValue() > max) {
max = entry.getValue();
element = entry.getKey();
}
}
return element;
}
Никогда. Когда-либо. Если у Вас есть переменное затенение, Ваши соглашения о присвоении имен находятся на трещине. Я не имею в виду, действительно, именования различения для членских переменных? Фейспалм