Десятичное доминирующее число в массиве

Недавно я наткнулся на этот вопрос из интервью:

Вам дано n действительных чисел в массиве. Число в массиве называется десятичной доминантой, если оно встречается более n/10 раз в массиве. Предложите алгоритм времени O(n), чтобы определить, имеет ли данный массив десятичную доминанту.

Теперь я могу придумать несколько способов решения этого вопроса и любое обобщение этого вопроса (т.е. найти любое число, которое появляется K раз в массиве)

Можно было бы создать хеш-таблицу на проходе 1, а затем подсчитать количество вхождений на проходе 2, что будет равно O(n), но также использует пространство O(n) ,

Есть один способ с использованием 9 ведер

Но есть ли способ сделать это в постоянном пространстве? Есть предложения??

[EDIT] я не проверял решение с 9 ведрами, читатели могут просмотреть комментарии n.m. ниже

9
задан Daniel Fischer 7 March 2012 в 12:58
поделиться