Ich habe Code geschrieben, um Duplikate aus Integer Array zu entfernen. Ich möchte keine eingebauten Schlüsselwörter / Eigenschaften verwenden.
Hier ist meine Logik:
%Vor%Die Ausgabe sollte lauten:
1,2,3,4
Es gibt nicht die gewünschte Ausgabe. Jungs, das ist nicht der Homewok. Das ist Selbstlernen. Nein LINQ, Enthält das Schlüsselwort bitte. Vielen Dank für Ihre Antworten.
Danke.
Da dies eine Hausaufgabe ist, würde ich Ihren Code nicht reparieren und Ihnen stattdessen ein paar Notizen geben:
Hier ist ein Weg, es mit zwei verschachtelten foreach-Schleifen zu machen:
%Vor% Wenn Sie List<int>
nicht verwenden möchten, müssen Sie ein temporäres Array mit der Größe des ersten Arrays erstellen. Dann, wenn das verarbeitet wurde, müssen Sie verfolgen, wie viele Elemente Sie wirklich gefunden haben und kopieren Sie diese in ein neues Array.
Das Problem ist, dass Sie nur jedes Element mit dem vorherigen vergleichen. Da dies eine selbstlernende Übung ist, werde ich nur einen Überblick darüber geben, wie es gemacht wird und Sie die Details ausarbeiten lassen.
Sie benötigen zwei verschachtelte Schleifen:
Beachten Sie, dass dies eine O (n 2 ) Zeit erfordert.
Sie können es mit anderen Methoden schneller machen:
HashSet
oder Enumerable.Distinct
: O (n) Zeit. Aber diese letzteren Ansätze sind wahrscheinlich beide nicht erlaubt, weil Sie keine eingebauten Klassen / Methoden verwenden.
Ok, du hast gesagt, du willst nichts eingebaut haben, also lass uns alles von Grund auf machen.
Es gibt zwei Möglichkeiten (ich weiß), dies zu tun. Einer hat Komplexität O (n ^ 2) und einer hat Komplexität O (n + n * log (n)). Die zweite ist schneller, aber die erste ist einfacher.
Die langsamere (aber einfachere) Lösung: O (n ^ 2)
%Vor%Die schnellere (aber kompliziertere) Lösung: O (n + n * log (n))
%Vor%Wenn Sie Artikel zuerst bestellen, und nachdem Sie nur mit dem nächsten vergleichen, haben Sie keine Kosten.
Algorithmus:
Array bestellen
foreach elem if (has_next & amp; & amp; next ist gleich) Element entfernen; nächstes
Druck-Array
Wenn die Platzkosten kein Problem sind, können Sie uns hashtable struct. Aber ich denke, meine Idee ist einfacher.
Sie können auch ein Wörterbuch verwenden, das schneller ist als die arrayList
%Vor%Sie können die .Distinct () - Erweiterungsmethode wie folgt verwenden,
%Vor%Tags und Links c#