>백엔드 개발 >Golang >Golang 배열 교차를 해독하기 위한 팁

Golang 배열 교차를 해독하기 위한 팁

王林
王林원래의
2024-04-03 17:39:011266검색

Go 언어에서 배열의 교차점을 찾는 방법은 다음과 같습니다. 정렬된 배열에 적합한 내장 함수 Intersect를 사용합니다. 큰 배열이나 요소 수가 적은 배열에 적합한 맵을 사용하세요. 매우 큰 배열에 대한 사용자 정의 정렬 및 이진 검색. 어떤 방법을 선택할지는 배열의 크기와 요소의 분포에 따라 다릅니다.

解密 Golang 数组求交集的技巧

Go 언어에서 배열의 교차점을 찾는 기술을 해독하세요

Go 언어에서 배열은 동일한 유형의 요소를 저장하는 순서가 지정된 컬렉션입니다. 배열에 대한 교차 연산을 수행하면 두 개 이상의 배열에 동시에 존재하는 요소를 얻을 수 있습니다. 다음은 다양한 시나리오에서 교차점을 찾는 몇 가지 실용적인 기술을 소개합니다.

내장 함수 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

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
}
🎜🎜사용자 정의 정렬 및 이진 검색🎜🎜🎜매우 큰 배열의 경우 교차점에 대해 사용자 정의 정렬 및 이진 검색 알고리즘을 사용하면 더 나은 성능을 얻을 수 있습니다. 먼저 두 배열을 모두 정렬한 다음 배열 중 하나를 반복하고 다른 배열에 대해 이진 검색을 수행하여 일치하는 요소를 찾습니다. 🎜rrreee🎜코드 성능을 최적화하려면 배열 크기와 요소 분포를 기반으로 가장 적절한 교차 기술을 선택하세요. 🎜

위 내용은 Golang 배열 교차를 해독하기 위한 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.