Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Schnittmenge von Arrays in Golang

So implementieren Sie die Schnittmenge von Arrays in Golang

WBOY
WBOYOriginal
2024-04-03 18:09:011184Durchsuche

Es gibt zwei gängige Methoden zum Ermitteln des Schnittpunkts von Golang-Arrays: Verwenden der integrierten Append-Funktion, Schleifen, um festzustellen, ob sich das Element in einem anderen Array befindet, und Überlagern, um den Schnittpunkt zu ermitteln. Verwenden Sie die Karte, um doppelte Elemente auszuschließen und Schnittpunkte effizient zu ermitteln, indem Sie eine Zuordnungstabelle erstellen.

Golang 数组求交集的实现方法

Implementierungsmethode der Array-Schnittmenge in Golang

In Golang gibt es mehrere Methoden zur Lösung der Array-Schnittmenge. In diesem Artikel werden die beiden gängigsten Methoden vorgestellt: die Verwendung der integrierten Funktion append und die Verwendung von map. append 函数和使用 map

方法 1:使用内置的 append 函数

append 函数可以将元素添加到现有数组中,也可以创建一个新数组。我们可以利用这个特性来求交集:

func intersection(a, b []int) []int {
    result := []int{}
    for _, v := range a {
        if containsInArray(b, v) {
            result = append(result, v)
        }
    }
    return result
}

func containsInArray(arr []int, elem int) bool {
    for _, v := range arr {
        if v == elem {
            return true
        }
    }
    return false
}

方法 2:使用 map

另一种求交集的方法是使用 map。与 append 函数相比,使用 map 的效率更高,因为它可以 O(n) 的时间复杂度排除重复元素:

func intersection(a, b []int) []int {
    m := make(map[int]bool)
    for _, v := range a {
        m[v] = true
    }

    result := []int{}
    for _, v := range b {
        if m[v] {
            result = append(result, v)
        }
    }
    return result
}

实战案例

假设我们有以下两个数组:

a := []int{1, 2, 3, 4, 5, 6}
b := []int{3, 4, 5, 6, 7, 8}

使用 append 函数求交集:

intersectionAB := intersection(a, b)
fmt.Println(intersectionAB) // [3 4 5 6]

使用 map

🎜Methode 1: Verwenden Sie die integrierte Funktion append 🎜🎜🎜Die Funktion append kann Elemente zu einem vorhandenen Array hinzufügen oder ein neues Array erstellen. Wir können diese Funktion verwenden, um die Kreuzung zu finden: 🎜
intersectionBA := intersection(b, a)
fmt.Println(intersectionBA) // [3 4 5 6]
🎜🎜Methode 2: Verwenden Sie map🎜🎜🎜Eine andere Möglichkeit, die Kreuzung zu finden, ist die Verwendung von map. Im Vergleich zur Funktion append ist die Verwendung von map effizienter, da dadurch doppelte Elemente mit O(n)-Zeitkomplexität entfernt werden können: 🎜rrreee🎜🎜Praktischer Fall🎜🎜 🎜Angenommen, wir haben die folgenden zwei Arrays: 🎜rrreee🎜Verwenden Sie die Funktion append, um den Schnittpunkt zu finden: 🎜rrreee🎜Verwenden Sie map, um den Schnittpunkt zu finden: 🎜rrreee

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Schnittmenge von Arrays in Golang. 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