Dalam bahasa Go, kaedah untuk mencari persilangan tatasusunan ialah: gunakan fungsi terbina dalam Intersect, yang sesuai untuk tatasusunan yang diisih. Gunakan peta, sesuai untuk tatasusunan besar atau tatasusunan dengan beberapa elemen. Pengisihan tersuai dan carian binari untuk tatasusunan yang sangat besar. Kaedah yang hendak dipilih bergantung pada saiz tatasusunan dan pengedaran unsur.
Nyahsulit kemahiran mencari persilangan tatasusunan dalam bahasa Go
Dalam bahasa Go, tatasusunan ialah koleksi tersusun yang menyimpan unsur jenis yang sama. Melakukan operasi persilangan pada tatasusunan boleh mendapatkan elemen yang wujud serentak dalam dua atau lebih tatasusunan. Berikut memperkenalkan beberapa teknik praktikal untuk mencari persimpangan dalam senario yang berbeza.
Fungsi terbina dalam 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
Bahasa Go menyediakan fungsi Sintersect
dalam pakej sort
, yang boleh mendapatkan secara langsung dua tatasusunan yang disusun persimpangan. Fungsi ini menerima dua tatasusunan diisih sebagai argumen dan mengembalikan tatasusunan baharu yang mengandungi elemen persilangan. 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
}
Intersect
ialah penyelesaian yang cekap dan ringkas.
peta
, anda boleh menyemak dengan cepat sama ada elemen dalam tatasusunan lain turut berada dalam peta
. 🎜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 }
Atas ialah kandungan terperinci Petua untuk menyahsulit persimpangan tatasusunan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!