Maison >développement back-end >Golang >Conseils pour décrypter l'intersection du tableau Golang
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.
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 Intersect
Intersect
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.
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!