> 백엔드 개발 > Golang > Golang에서 배열 교차를 구현하는 방법

Golang에서 배열 교차를 구현하는 방법

WBOY
풀어 주다: 2024-04-03 18:09:01
원래의
1191명이 탐색했습니다.

Golang 배열의 교차점을 찾는 데는 두 가지 일반적인 방법이 있습니다. 내장된 추가 기능을 사용하는 것, 요소가 다른 배열에 있는지 확인하기 위해 반복하는 것, 교차점을 찾기 위해 중첩하는 것입니다. map을 사용하면 매핑 테이블을 생성하여 중복 요소를 제외하고 효율적으로 교차점을 얻을 수 있습니다.

Golang 数组求交集的实现方法

Golang의 배열 교차 구현 방법

Golang에는 배열 교차를 해결하는 여러 가지 방법이 있습니다. 이 문서에서는 가장 일반적인 두 가지 방법인 내장 append 기능을 사용하는 방법과 map을 사용하는 방법을 소개합니다. append 函数和使用 map

方法 1:使用内置的 append 函数

append 函数可以将元素添加到现有数组中,也可以创建一个新数组。我们可以利用这个特性来求交集:

func intersection(a, b []int) []int {
    result := []int{}
    for _, v := range a {
        if containsInArray(b, v) {
            result = append(result, v)
        }
    }
    return result
}

func containsInArray(arr []int, elem int) bool {
    for _, v := range arr {
        if v == elem {
            return true
        }
    }
    return false
}
로그인 후 복사

方法 2:使用 map

另一种求交集的方法是使用 map。与 append 函数相比,使用 map 的效率更高,因为它可以 O(n) 的时间复杂度排除重复元素:

func intersection(a, b []int) []int {
    m := make(map[int]bool)
    for _, v := range a {
        m[v] = true
    }

    result := []int{}
    for _, v := range b {
        if m[v] {
            result = append(result, v)
        }
    }
    return result
}
로그인 후 복사

实战案例

假设我们有以下两个数组:

a := []int{1, 2, 3, 4, 5, 6}
b := []int{3, 4, 5, 6, 7, 8}
로그인 후 복사

使用 append 函数求交集:

intersectionAB := intersection(a, b)
fmt.Println(intersectionAB) // [3 4 5 6]
로그인 후 복사

使用 map

🎜방법 1: 내장된 append 함수 사용 🎜🎜🎜append 함수는 기존 배열에 요소를 추가하거나 새 배열을 만들 수 있습니다. 이 기능을 사용하여 교차로를 찾을 수 있습니다. 🎜
intersectionBA := intersection(b, a)
fmt.Println(intersectionBA) // [3 4 5 6]
로그인 후 복사
🎜🎜방법 2: 지도 사용🎜🎜🎜교차로를 찾는 또 다른 방법은 지도를 사용하는 것입니다. append 함수와 비교할 때 map을 사용하는 것이 O(n) 시간 복잡도로 중복 요소를 제거할 수 있기 때문에 더 효율적입니다. 🎜rrreee🎜🎜실용 사례🎜🎜 🎜우리가 다음 두 개의 배열이 있습니다. 🎜rrreee🎜교차점을 찾으려면 append 함수를 사용하세요. 🎜rrreee🎜교차점을 찾으려면 map을 사용하세요. 🎜rrreee

위 내용은 Golang에서 배열 교차를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿