Go 언어에서 배열의 교차점을 찾는 방법은 다음과 같습니다. 정렬된 배열에 적합한 내장 함수 Intersect를 사용합니다. 큰 배열이나 요소 수가 적은 배열에 적합한 맵을 사용하세요. 매우 큰 배열에 대한 사용자 정의 정렬 및 이진 검색. 어떤 방법을 선택할지는 배열의 크기와 요소의 분포에 따라 다릅니다.
Go 언어에서 배열의 교차점을 찾는 기술을 해독하세요
Go 언어에서 배열은 동일한 유형의 요소를 저장하는 순서가 지정된 컬렉션입니다. 배열에 대한 교차 연산을 수행하면 두 개 이상의 배열에 동시에 존재하는 요소를 얻을 수 있습니다. 다음은 다양한 시나리오에서 교차점을 찾는 몇 가지 실용적인 기술을 소개합니다.
내장 함수 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
Go 언어는 sort
패키지에 Intersect
함수를 제공하여 두 개의 정렬된 배열을 직접 얻을 수 있습니다. 교차로. 이 함수는 두 개의 정렬된 배열을 인수로 받고 교차 요소를 포함하는 새 배열을 반환합니다. 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
기능이 효율적이고 간결한 솔루션입니다.
맵
사용🎜대규모 또는 요소 수가 적은 배열의 경우 교차점에 맵
을 사용하는 것도 효과적인 방법입니다. 맵
에서 배열을 키로 사용하면 다른 배열의 요소가 맵
에도 있는지 빠르게 확인할 수 있습니다. 🎜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 }
위 내용은 Golang 배열 교차를 해독하기 위한 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!