Maison >développement back-end >Golang >Conseils pour décrypter l'intersection du tableau Golang

Conseils pour décrypter l'intersection du tableau Golang

王林
王林original
2024-04-03 17:39:011266parcourir

En langage Go, les méthodes pour trouver l'intersection des tableaux sont : utiliser la fonction intégrée Intersect, qui convient aux tableaux triés. Utilisez map, adapté aux grands tableaux ou aux tableaux avec peu d’éléments. Tri personnalisé et recherche binaire pour de très grands tableaux. La méthode à choisir dépend de la taille du tableau et de la distribution des éléments.

解密 Golang 数组求交集的技巧

Décryptez les compétences permettant de trouver l'intersection de tableaux en langage Go

En langage Go, un tableau est une collection ordonnée qui stocke des éléments du même type. L'exécution d'une opération d'intersection sur des tableaux peut obtenir des éléments qui existent simultanément dans deux ou plusieurs tableaux. Ce qui suit présente plusieurs techniques pratiques pour trouver des intersections dans différents scénarios.

Fonction intégrée IntersectIntersect

Go 语言提供了 sort 包中的 Intersect 函数,可直接求取两个已排序数组的交集。该函数接收两个已排序数组作为参数,并返回一个包含交集元素的新数组。

package main

import (
    "fmt"
    "sort"
)

func main() {
    arr1 := []int{1, 3, 5, 7, 9}
    arr2 := []int{2, 4, 6, 8, 9}

    sort.Ints(arr1)
    sort.Ints(arr2)

    res := sort.Intersect(arr1, arr2)
    fmt.Println(res) // []9
}

对于较小的数组,Intersect 函数是高效且简洁的解决方案。

使用 map

对于大型或元素不多的数组,使用 map 进行求交集也是一种有效的方法。通过将一个数组作为 map 的键,可以快速检查另一个数组中的元素是否也在 map

Le langage Go fournit la fonction Intersect dans le package sort, qui peut obtenir directement deux tableaux triés intersection. Cette fonction reçoit deux tableaux triés comme arguments et renvoie un nouveau tableau contenant les éléments d'intersection.

package main

import "fmt"

func main() {
    arr1 := []int{1, 3, 5, 7, 9}
    arr2 := []int{2, 4, 6, 8, 9}

    m := make(map[int]bool)
    for _, v := range arr1 {
        m[v] = true
    }

    var res []int
    for _, v := range arr2 {
        if m[v] {
            res = append(res, v)
        }
    }

    fmt.Println(res) // []9
}
Pour les tableaux plus petits, la fonction Intersect est une solution efficace et concise.

Utilisez map

🎜Pour les grands tableaux ou avec peu d'éléments, utiliser map pour l'intersection est également une méthode efficace. En utilisant un tableau comme clé dans une map, vous pouvez rapidement vérifier si un élément d'un autre tableau se trouve également dans une map. 🎜
package main

import (
    "fmt"
    "sort"
)

func main() {
    arr1 := []int{1, 3, 5, 7, 9, 11, 13, 15}
    arr2 := []int{2, 4, 6, 8, 9, 10, 12, 14, 16}

    sort.Ints(arr1)
    sort.Ints(arr2)

    res := intersection(arr1, arr2)
    fmt.Println(res) // []9
}

func intersection(a, b []int) []int {
    var res []int
    for _, v := range a {
        idx := sort.SearchInts(b, v)
        if idx >= 0 && b[idx] == v {
            res = append(res, v)
        }
    }
    return res
}
🎜🎜Tri personnalisé et recherche binaire🎜🎜🎜Pour les très grands tableaux, l'utilisation d'algorithmes de tri personnalisé et de recherche binaire pour l'intersection peut obtenir de meilleures performances. Triez d’abord les deux tableaux, puis parcourez l’un des tableaux et effectuez une recherche binaire sur l’autre pour trouver les éléments correspondants. 🎜rrreee🎜 Choisissez la technique d'intersection la plus appropriée en fonction de la taille du tableau et de la distribution des éléments pour optimiser les performances du code. 🎜

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