Zum Hauptinhalt springen

Wie kann ich nicht wiederkehrende Zahlen ausgeben

Sich wiederholende Zahlen - dies sind Zahlen, die nur einmal in einer bestimmten Reihenfolge vorkommen. Zum Beispiel, wenn wir eine Folge von Zahlen haben [1, 2, 3, 3, 4, 4, 5], dann werden sich nicht wiederholende Zahlen ergeben [1, 2, 5].

Es gibt mehrere einfache Methoden und Algorithmen die es Ihnen ermöglichen, nur nicht wiederholte Zahlen aus einer bestimmten Sequenz abzuleiten. Eine solche Methode ist die Verwendung array und Schleife.

Um das Problem zu lösen, können Sie ein Array erstellen, das nur nicht wiederholte Zahlen enthält. Danach iterieren Sie in einer Schleife alle Zahlen aus der angegebenen Sequenz und fügen Sie sie dem Array hinzu, wenn es noch keine solche Zahl im Array gibt. Somit ergibt sich am Ende ein Array, das nur nicht wiederholte Zahlen enthält.

Es gibt verschiedene Möglichkeiten und Algorithmen zur Lösung dieses Problems. Betrachten wir einige von ihnen:

1. Verwenden von Set (Set)

Set numbers = new HashSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(2); for (Integer number : numbers)

In diesem Beispiel wird Folgendes ausgegeben:

2. Verwenden von Map

Map numbers = new HashMap<>(); numbers.put(1, 1); numbers.put(2, 2); numbers.put(3, 1); numbers.put(2, 3); for (Map.Entry entry : numbers.entrySet())

In diesem Beispiel wird Folgendes ausgegeben:

3. Stream verwenden

List numbers = Arrays.asList(1, 2, 3, 2); numbers.stream() .distinct() .forEach(System.out::println);

In diesem Beispiel wird Folgendes ausgegeben:

Aufgabenauswahl und Datenvorbereitung

Die Datenvorbereitung umfasst Schritte wie das Lesen und Laden von Daten aus einer Quelle, das Konvertieren von Daten in das gewünschte Format und das Ausführen aller erforderlichen Vorgänge zum Bereinigen oder Verarbeiten von Daten.

Wenn die Daten beispielsweise in einer Textdatei gespeichert sind, können Sie die entsprechende Funktion verwenden, um die Datei zu lesen und die Daten in den Speicher zu laden. Wenn die Daten als Zeichenfolge angegeben sind, können Sie Funktionen verwenden, um eine Zeichenfolge in Teilzeichenfolgen zu unterteilen oder um Zahlen aus einer Zeichenfolge abzurufen.

Beispiele für Aufgaben:Beispiele für Datenquellen:
Nicht wiederkehrende Zahlen aus einem Array ausgebenEin Array von Zahlen: [1, 2, 2, 3, 4, 4, 5]
Nicht wiederholte Zahlen aus der Zahlenliste ableitenListe der Zahlen: 1, 2, 2, 3, 4, 4, 5
Nicht wiederholte Zahlen aus einer Datei ausgebenDatei mit Zahlen: numbers.txt
Nicht wiederkehrende Zahlen aus einer Zeichenfolge ausgebenZeichenfolge mit Zahlen: "1 2 2 3 4 4 5"

Methode 1: Verwenden von Mengen

Eine Menge ist eine Datenstruktur, die keine doppelten Elemente zulässt. Wenn Sie ein Element zu einer Menge hinzufügen, wird überprüft, ob ein solches Element bereits darin enthalten ist. Wenn das Element bereits vorhanden ist, wird es nicht hinzugefügt. Infolgedessen verbleiben nur nicht wiederholte Elemente in der Menge.

Algorithmus:

  1. Erstellen Sie eine leere Menge.
  2. Durch jedes Element der Zahlenliste gehen:
    • Wenn eine Zahl bereits in einer Menge enthalten ist, überspringen Sie sie.
    • Andernfalls fügen Sie der Menge eine Zahl hinzu.
  3. Elemente aus der Menge auf den Bildschirm bringen.

Beispielcode:

def print_unique_numbers(nums): unique_numbers = set() for num in nums: if num not in unique_numbers: unique_numbers.add(num) for num in unique_numbers: print(num)

Anmerkung:

Die Methode mit einer Menge ist eine der effektivsten Methoden, um nicht wiederkehrende Elemente abzuleiten. Dies liegt daran, dass der Vorgang zur Überprüfung des Vorhandenseins eines Elements in einer Menge sehr schnell mit fast konstanten Betriebszeiten durchgeführt wird.

Methode 2: Überprüfen Sie jedes Element auf Eindeutigkeit

  1. Wir wählen das erste Element des Arrays aus und betrachten es als einzigartig.
  2. Überprüfen Sie für jedes nächste Element im Array, ob es bereits als eindeutiges Element ausgewählt wurde:
    1. Wenn ja, überspringen wir es und gehen zum nächsten Element über.
    2. Wenn nicht, überprüfen Sie es auf Gleichheit mit allen vorherigen Elementen:
      1. Wenn mindestens ein gleicher Wert vorhanden ist, ist das Element nicht eindeutig und wir überspringen es auch.

      Daher benötigt diese Methode mehr Zeit und Ressourcen als die Methode zur Verwendung einer Hash-Tabelle, ermöglicht jedoch das Auffinden von nicht wiederkehrenden Zahlen ohne zusätzlichen Speicher.

      Algorithmus 1: Doppelte Elemente sortieren und löschen

      1. Erstellen Sie ein Quellarray von Zahlen.
      2. Sortieren Sie das Array in aufsteigender oder absteigender Reihenfolge.
      3. Erstellen Sie ein neues Array und fügen Sie das erste Element aus dem ursprünglichen Array hinzu.
      4. Gehen Sie durch das ursprüngliche Array und vergleichen Sie das aktuelle Element mit dem zuletzt hinzugefügten Array.
      5. Wenn sich das aktuelle Element vom zuletzt hinzugefügten Element unterscheidet, fügen Sie es dem neuen Array hinzu.
      6. Wiederholen Sie die Schritte 4 bis 5 bis zum Ende des ursprünglichen Arrays.

      Nachdem Sie alle Schritte ausgeführt haben, werden nur die nicht wiederholten Zahlen in der sortierten Reihenfolge im neuen Array verbleiben.

      Algorithmus 2: Verwenden von Bitoperationen, um eindeutige Zahlen zu finden

      Der Algorithmus besteht aus den folgenden Schritten:

      1. Erstellen Sie ein Binärarray mit einer Länge, die der maximal möglichen Zahl entspricht.
      2. Setzt alle Elemente des Arrays auf Null.
      3. Durchlaufen Sie das gesamte Eingabe-Array von Zahlen.
      4. Überprüfen Sie für jede Zahl ihren Status im Binärarray:
        • Wenn das Array-Element bereits auf 1 gesetzt ist, ist die Zahl zuvor aufgetreten und Sie können sie überspringen.
        • Wenn das Array-Element 0 ist, tritt die Zahl zum ersten Mal auf und muss verarbeitet werden.
      5. Setzen Sie nach der Verarbeitung der Zahl das entsprechende Array-Element auf 1.

      Wenn Sie also alle Zahlen des Eingabe-Arrays durchlaufen haben, werden nur die Elemente im binären Array gesetzt, die mit nicht wiederholten Zahlen übereinstimmen.