Umgang mit M Vorkommen unter N
Frage, die ich beim Vorstellungsgespräch erhalten habe. Ich war nah an der Lösung, habe sie aber leider nicht gelöst.
Angenommen, wir haben eine Sequenz, die @ enthäN Nummern vom Typlong
. Und wir wissen mit Sicherheit, dass in dieser Sequenz jede Zahl genau @ vorkommn mal abgesehen von der einen Zahl, die genau @ vorkomm times 0 < m < n). Wie finden wir diese Nummer mitAUF Operationen undO (1) zusätzlicher Speicher?
Für den einfachsten Fall (wennn = 2 undm = 1) Alles, was wir tun sollten, ist nur akkumulative @ durchzuführxor
auf jeder Nummer der Reihe nach. Das Ergebnis entspricht der gewünschten Anzahl. Aber ich stecke fest, während ich versuche, mit willkürlichem @ umzugehem undn.
Ich würde mich über eine aktuelle C ++ - Lösung freuen.
EDIT: Wir kennen die tatsächlichen Werte vonm undn a priori.
Beispiel Wir wissen dasn = 3 undm = 2. Die Sequenz N = 8) ist
5 11 5 2 11 5 2 11
Und die richtige Antwort ist2 in diesem speziellen Fall, weil es nur zweimal vorkommt.