Maison >développement back-end >Golang >Comment implémenter l'intersection de tableaux dans Golang

Comment implémenter l'intersection de tableaux dans Golang

WBOY
WBOYoriginal
2024-04-03 18:09:011212parcourir

Il existe deux méthodes courantes pour trouver l'intersection des tableaux Golang : utiliser la fonction d'ajout intégrée, effectuer une boucle pour déterminer si l'élément se trouve dans un autre tableau et superposer pour trouver l'intersection. Utilisez map pour exclure les éléments en double et obtenir efficacement des intersections en créant une table de mappage.

Golang 数组求交集的实现方法

Méthode d'implémentation de l'intersection de tableaux dans Golang

Dans Golang, il existe plusieurs méthodes pour résoudre l'intersection de tableaux. Cet article présentera les deux méthodes les plus courantes : utiliser la fonction intégrée append et utiliser 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

🎜Méthode 1 : utilisez la fonction intégrée append 🎜🎜🎜La fonction append peut ajouter des éléments à un tableau existant ou créer un nouveau tableau. Nous pouvons utiliser cette fonctionnalité pour trouver l'intersection : 🎜
intersectionBA := intersection(b, a)
fmt.Println(intersectionBA) // [3 4 5 6]
🎜🎜Méthode 2 : Utilisez map🎜🎜🎜Une autre façon de trouver l'intersection est d'utiliser map. Par rapport à la fonction append, l'utilisation de map est plus efficace car elle peut éliminer les éléments en double avec une complexité temporelle O(n) : 🎜rrreee🎜🎜Cas pratique🎜🎜 🎜Supposons que nous avoir les deux tableaux suivants : 🎜rrreee🎜Utilisez la fonction append pour trouver l'intersection : 🎜rrreee🎜Utilisez map pour trouver l'intersection : 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn