Ich möchte einen Divide and Conquer-Algorithmus (O (nlgn) runtime) erstellen, um festzustellen, ob in einem Array eine Zahl k mal vorkommt. Eine Einschränkung für dieses Problem besteht darin, dass für die Objekte des Arrays nur eine Vergleichsmethode für Gleichheit/Ungleichheit definiert ist (d. H. <,> kann nicht verwendet werden).Ermitteln, ob im Array eine Zahl existiert, die k mal vorkommt
Also habe ich eine Reihe von Ansätzen ausprobiert, einschließlich der Aufspaltung des Arrays in k Stücke gleicher Größe (ungefähr). Der Ansatz ähnelt dem Finden des Mehrheitselementes in einem Array. Wenn Sie jedoch das Array teilen, wissen Sie, dass die Mehrheit einen Majoritätseintrag haben muss, wenn ein solches Element existiert. Irgendwelche Hinweise oder Tipps, die man mir geben könnte, um mich in die richtige Richtung zu bringen?
EDIT: Um ein wenig aufzuräumen, frage ich mich, ob das Problem des Findens der Majorität Element durch Aufspalten des Arrays in zwei Hälften und Verwenden einer rekursiven Lösung auf andere Situationen erweitert werden kann, wobei k n/4 oder n/sein kann 5 usw.
Vielleicht sollte ich die Frage mit n/k stattdessen phrasen.
Ist k ein Eingang oder eine feste Konstante? – user2357112
Weißt du auch, ob das tatsächlich möglich ist? – user2357112
Wer hat dieses Problem zugewiesen? Was motiviert es? Warum glaubst du, dass es möglich ist? –