Так что, если я правильно понимаю, вы ищете максимальное количество повторяющихся значений в массиве.
func( {1,2,3} ) = 0
func( {1,1,3} ) = 2
func( {1,1,1} ) = 3
Чтобы получить процент, вы просто делите этот результат на длину массива.
Проблема в том, что ваша функция слишком проста, и не совсем решение.
Решение, которое я придумываю при первом подходе, состоит в том, чтобы иметь другой массив с именем count. Это та же длина, что и ваш исходный массив. В конечном итоге это число раз, которое появляется каждое число в исходном массиве.
Для каждого элемента в исходном массиве вы подсчитываете, сколько раз появляется это число, и сохраняете результат. Затем вы найдете максимум массива count, и у вас есть а) значение максимального повторения, которое вы ищете, и б) индекс соответствующего значения максимального повторения из исходного массива.
Для примера {0,0,1,9,0,1}:
src counts
0 3 Max
0 3
1 2
9 1
0 3
1 2
Одной из оптимизаций этого является то, что во время подсчета, если вы встретите то же число ранее в массиве, вы можете остановиться, потому что вы уже посчитали повторы для этого значения.
С этим на месте, ваш результат:
src counts
0 3 Max
0 0
1 2
9 1
0 0
1 0
Еще одна оптимизация - начать отсчет только с текущего индекса в массиве. Это работает по той же причине, что и другая оптимизация.
Результаты:
src counts
0 3 Max
0 2
1 2
9 1
0 1
1 1