Недавно я наткнулся на этот вопрос из интервью:
Вам дано n действительных чисел в массиве. Число в массиве называется десятичной доминантой, если оно встречается более n/10 раз в массиве. Предложите алгоритм времени O(n), чтобы определить, имеет ли данный массив десятичную доминанту.
Теперь я могу придумать несколько способов решения этого вопроса и любое обобщение этого вопроса (т.е. найти любое число, которое появляется K раз в массиве)
Можно было бы создать хеш-таблицу на проходе 1, а затем подсчитать количество вхождений на проходе 2, что будет равно O(n), но также использует пространство O(n) ,
Есть один способ с использованием 9 ведер
Но есть ли способ сделать это в постоянном пространстве? Есть предложения??
[EDIT] я не проверял решение с 9 ведрами, читатели могут просмотреть комментарии n.m. ниже