Организуем
односвязный список с элементами следующей структуры:
type
PRec = ^TRec;
TRec = record
mNumber : integer; // число из массива
mCount : integer; // счетчик вхождений
mNext : PRec; // поле связи
end;
Далее проходим по массиву (1 раз!) и формируем список так, чтобы при повторниях одинаковых чисел наращивался только счетчик mCount. Осталось лишь пробежать по списку и выбрать максимальный mCount.
По сути список здесь выполняет роль
множества особого рода. Эффективней, но немного сложнее, - организовать такое множество через бинарное дерево.
---
Аналогичная задача решена в главе 55 книги
Песни о Паскале