Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man in Go effizient nach Teilmengen mit ganzzahligen Slices suchen?

Wie kann man in Go effizient nach Teilmengen mit ganzzahligen Slices suchen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 05:03:03790Durchsuche

How to Efficiently Check for Subsets with Integer Slices in Go?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn