Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in Go mithilfe einer Karte effizient feststellen, ob ein Ganzzahlsegment eine Teilmenge eines anderen ist?

Wie kann ich in Go mithilfe einer Karte effizient feststellen, ob ein Ganzzahlsegment eine Teilmenge eines anderen ist?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 08:11:31831Durchsuche

How can I efficiently determine if one slice of integers is a subset of another in Go using a map?

Teilmengenprüfung mit Ganzzahlscheiben in Go mithilfe von Map

Um festzustellen, ob eine Ganzzahlscheibe eine Teilmenge einer anderen ist, ist eine effiziente, mehr als einfache Lösung erforderlich Iteration. In diesem Artikel wird eine Lösung vorgestellt, die eine Karte verwendet, um die Prüfung zu optimieren.

Teilmengendefinition

Ein Slice wird als Teilmenge eines anderen betrachtet, wenn es alle Elemente des Slice enthält Letzteres, unter möglicher Einbeziehung von Duplikaten. Beispielsweise ist {1, 2, 3} eine Teilmenge von {1, 2, 3, 4}, während {1, 2, 2} keine Teilmenge von {1, 2, 3, 4} ist.

Kartenbasierte Implementierung

Die bereitgestellte Lösung verwendet eine Karte, um effizient zu bestimmen, ob ein Slice eine Teilmenge ist. Es erstellt eine Karte aus dem zweiten Slice, wobei die Anzahl jedes Elements der Wert ist. Anschließend wird das erste Segment durchlaufen und das Vorhandensein jedes Elements in der Karte überprüft. Wenn alle Elemente mit ausreichend Duplikaten gefunden werden, gilt das erste Slice als Teilmenge.

Beispielcode

<code class="go">import "fmt"

// subset returns true if the first array is completely
// contained in the second array. There must be at least
// the same number of duplicate values in second as there
// are in first.
func subset(first, second []int) bool {
    set := make(map[int]int)
    for _, value := range second {
        set[value]++
    }

    for _, value := range first {
        if count, ok := set[value]; !ok {
            return false
        } else if count < 1 {
            return false
        } else {
            set[value] = count - 1
        }
    }

    return true
}

func main() {
    fmt.Println(subset([]int{1, 2, 3}, []int{1, 2, 3, 4}))
    fmt.Println(subset([]int{1, 2, 2}, []int{1, 2, 3, 4}))
}</code>

Ausgabe

true
false

Fazit

Diese kartenbasierte Lösung bestimmt effizient, ob ein ganzzahliger Slice eine Teilmenge eines anderen ist, und verarbeitet mögliche doppelte Werte. Es bietet einen optimierten Ansatz zur Lösung dieses häufigen Problems in Go.

Das obige ist der detaillierte Inhalt vonWie kann ich in Go mithilfe einer Karte effizient feststellen, ob ein Ganzzahlsegment eine Teilmenge eines anderen ist?. 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