Я хочу разработать алгоритм, определяющий, является ли массив A множественным, и вернуть этот элемент.Divide and conquer - Plural Array
Массив множественный, если в массиве существует элемент x, если более половины массива совпадает с x.
Мне интересно, есть ли более эффективный алгоритм разделения и покорения, который работает лучше, чем текущий, который у меня есть сейчас.
Assume you have the array
aaabbcac
i будет рекурсивно разделять массив до тех пор, пока я не получу подмассивы размером 2, как показано ниже.
aa ab bc ac
отсюда, я буду сравнивать каждый элемент в Подмассив, чтобы увидеть, если они равны: Если РАВНО, возвращает элемент, Иначе, вернуть ложь.
aa ab bc ac
a f f f
так что теперь у меня есть массив элементов A и 3 false.
я думал комбинируя их таким образом:
a f f f
a f <----- combining a and f will give a
a <----- returns a
Но, если мы посмотрим на массив, мы имеем 4 А, которая не соответствует критериям множественного массива. Он должен возвращать false, если массив не будет множественным массивом.
Я считаю, что мой алгоритм будет работать в O (n lgn), если он будет правильным алгоритмом, которого, к сожалению, нет.
Может ли кто-нибудь указать мне в правильном направлении?
Должен ли быть подход к разделению и завоеванию? – gusbro
Да, я ищу алгоритм разделения и покорения. – ali
Это домашнее задание? Вы были очень близки ... –