Effiziente Teilmengenprüfung mit ganzzahligen Slices in Go
Die Feststellung, ob ein Slice eine Teilmenge eines anderen ist, ist eine häufige Programmieraufgabe. Während das Durchlaufen der Slices ein unkomplizierter Ansatz ist, lohnt es sich, effizientere Methoden auszuprobieren.
Eine effektive Lösung ist die Verwendung einer Kartendatenstruktur. Diese Technik erstellt eine Karte mit den Elementen des größeren Slice als Schlüssel und ihren jeweiligen Häufigkeiten als Werten. Anschließend werden die Elemente des kleineren Slice anhand der Karte überprüft. Wenn alle Elemente in der Karte mit ausreichender Häufigkeit gefunden werden, wird das kleinere Segment als Teilmenge des größeren betrachtet.
Eine Beispielimplementierung in Go:
<code class="go">package main import "fmt" func subset(first, second []int) bool { set := make(map[int]int) for _, value := range second { set[value]++ } for _, value := range first { if count, found := set[value]; !found { return false } else if count < 1 { return false } else { set[value]-- } } return true } func main() { fmt.Println(subset([]int{1, 2, 3}, []int{1, 2, 3, 4})) // true fmt.Println(subset([]int{1, 2, 2}, []int{1, 2, 3, 4})) // false }</code>
Dieser Ansatz prüft effizient nach Teilmengen in O(n)-Zeit, wobei n die Länge des größeren Abschnitts ist. Es verarbeitet effektiv doppelte Werte, was in solchen Szenarien häufig erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann man in Go effizient nach Teilmengen mit ganzzahligen Slices suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!