Wie zu verwenden golang zu überprüfen, wiederholen Sie die element in array?
Ich habe ein code um Zufallszahlen zu generieren und löschen die wiederholt wie unten:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
list := [7]int{}
for i := 0; i < 7; i++ {
here:
rand.Seed(time.Now().UnixNano())
s := rand.Intn(16)
fmt.Println(s)
if s != list[0] && s != list[1] && s != list[2] && s != list[3] && s != list[4] && s != list[5] && s != list[6] {
list[i] = s
} else {
goto here
}
}
fmt.Println("list:", list)
}
Bemerkte ich, dass es eine Menge wiederholt-code wie:
s!=list[0]&&list[1]
Aber wenn ich Schreibe es auf:
s!=list[0:6]
Ist es falsch, wie mache ich das richtig?
- Sind Sie wollen, um Duplikate entfernen oder entfernen Sie alle Einträge, die bereits eingegeben wurde?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern Sie es in der Karte.
wie
Ergebnis anzeigen speichern niemals wiederholt Indizes.
Können Sie wandeln es in Scheibe wie diese
Können Sie die standard-Bibliothek zum erzeugen der Zufalls-Elementen ohne Wiederholung in den ersten Platz.
Wenn Sie eine Möglichkeit zu prüfen, ein Stück int-Werte für einen Wert, versuchen Sie, diese Funktion (play.golang.org):
Können Sie diese wie unten, aber Sie werden nicht in der Lage zu führen Sie es erfolgreich auf play.golang.org da play.golang.org hat eine deterministische Antwort auf math/rand (In meinem Fall, ist es 0), die halten ihn davon ab, mehr als eine Antwort, zwingt Sie diesen code in eine Endlosschleife.
O(n)
Zeit, die Komplexität und das ist definitiv schlecht mit riesigen Stück Längen. -1 und unzumutbargoto
Nutzung.goto
Einsatz war ein Versuch, zu zeigen, wie die Funktion arbeiten konnte, in den OP ' s den aktuellen code.