Wie überprüfe ich in diesem Array nach doppelten Antworten? c #

8

Entschuldige die neue Frage. Könnte mir jemand helfen? Einfaches Array hier. Was ist die beste / einfachste Methode, um zu überprüfen, ob alle Benutzereingaben eindeutig und nicht doppelt sind? Danke

%Vor%

}

Ich hätte hinzufügen sollen, dass ich überprüfen muss, bevor die Zahlen ausgegeben werden. Danke

    
Rob 25.10.2012, 21:59
quelle

5 Antworten

15

Ein einfacher Ansatz ist über LINQ:

%Vor%     
Jon Skeet 25.10.2012, 22:01
quelle
2

Ein anderer Ansatz ist die Verwendung von HashSet<string> :

%Vor%

oder mit Enumerable.All :

%Vor%

Enunmerable.All ist effizienter, wenn die Sequenz sehr groß ist, da sie nicht erstellt wird Das Set wird komplett aber nacheinander gesetzt und liefert false , sobald es ein Duplikat entdeckt.

Hier ist eine Demo dieses Effekts: Ссылка

  • HashSet Konstruktorspeicherverbrauch: 50 MB, Dauer: 00: 00: 00.2962615
  • Enumerable.All Speicherverbrauch: 0 MB, Dauer: 00: 00: 00.0004254

msdn

  

Die Klasse HashSet<T> bietet leistungsstarke Set-Operationen.   Ein Set ist eine Sammlung, die keine doppelten Elemente enthält und deren   Elemente sind in keiner bestimmten Reihenfolge.

    
Tim Schmelter 25.10.2012 22:04
quelle
1

Der einfachste Weg wäre meiner Meinung nach, alle Werte innerhalb einer Menge einzufügen und dann , ob seine Größe der Größe des Arrays entspricht . Ein Satz kann keine doppelten Werte enthalten. Wenn ein Wert doppelt ist, wird er nicht in den Satz eingefügt.

Dies ist auch in der Komplexität in Ordnung, wenn Sie nicht Millionen von Werten haben, da die Einfügung in eine Menge in O(logn) -Zeit erfolgt, so dass die Gesamtprüfzeit O(nlogn) ist.

Wenn Sie etwas Optimales in der Komplexität wollen, können Sie dies in O(n) time tun, indem Sie das Array durchlaufen und jeden gefundenen Wert in eine Hash-Map übernehmen und den Wert erhöhen: if value doesn Wenn Sie in set nicht vorhanden sind, fügen Sie es mit count = 1 hinzu. Wenn es vorhanden ist, erhöhen Sie seine Anzahl. Dann gehen Sie durch die Hash-Map und prüfen, ob alle Werte eine Zahl von haben.

    
alestanis 25.10.2012 22:04
quelle
1

Wenn Sie nur versuchen, sicherzustellen, dass Ihre Listbox keine Duples enthält, verwenden Sie Folgendes:

%Vor%     
Rich Wawrzonek 25.10.2012 22:06
quelle
0

Was ist damit?

%Vor%     
Tamer Rifai 18.03.2016 21:04
quelle

Tags und Links