Ich habe zwei sortierte Arrays. Ich muss herausfinden, ob sie unterschiedlich sind oder nicht.
Diese Arrays enthalten Elemente in einem spezifischen Bereich.
Mehr als ein Element kann unterschiedlich sein.
Arrays können verschiedene Größen haben. In diesem Fall sollte ich in der Lage sein, die Unterschiede aufzuzeigen.
Ein grobes Beispiel:
Eingabe:
array1: 1 2 4 5 8 9 12
array2: 1 4 8 10 12 13 14
Hier liegt der Bereich bei 1-15.
Was ist der optimale Vergleichsalgorithmus?
Ich sollte in der Lage sein, die Unterschiede und Ähnlichkeiten aufzuzeigen, z.B. 4 ist in beiden und 5 fehlt im zweiten Array.
Meine Lösung:
-
Zwei Zeiger, um den Index des Arrays zu verfolgen.
-
Zeige sie auf den Anfang des Arrays.
-
Vergleiche die ersten beiden Elemente.
-
Wenn beide gleich sind --> gehe zum nächsten.
sonst-
Finden Sie das größte der beiden Elemente des Arrays. Sagen wir, array1 hat das größere Element.
-
Binäre Suche nach dem Element im anderen Array (array2) --> Position dieses Elements in diesem Array sagen pos
-
Verwerfen Sie die Elemente des Arrays bis zur Position.
-
-
Inkrementiere die Zeiger. Verwerfen Sie diesen Teil des Arrays bis zu diesen Zeigern. Wiederholen.
Dies hat eine Komplexität von n log n
(durchschnittlich viel weniger, dies ist, wenn Sie für jedes Element eine Suche durchführen müssen).