Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan persilangan tatasusunan di Golang

Bagaimana untuk melaksanakan persilangan tatasusunan di Golang

WBOY
WBOYasal
2024-04-03 18:09:011184semak imbas

Terdapat dua kaedah biasa untuk mencari persilangan tatasusunan Golang: menggunakan fungsi tambah terbina dalam, gelung untuk menentukan sama ada elemen itu berada dalam tatasusunan lain dan superposing untuk mencari persimpangan. Gunakan peta untuk mengecualikan elemen pendua dan dapatkan persimpangan dengan cekap dengan mencipta jadual pemetaan.

Golang 数组求交集的实现方法

Kaedah pelaksanaan persilangan tatasusunan di Golang

Di Golang, terdapat beberapa kaedah untuk menyelesaikan persilangan tatasusunan. Artikel ini akan memperkenalkan dua kaedah yang paling biasa: menggunakan fungsi append terbina dalam dan menggunakan 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

🎜Kaedah 1: Gunakan fungsi tambah terbina dalam 🎜🎜🎜Fungsi tambah boleh menambah elemen pada tatasusunan sedia ada atau mencipta tatasusunan baharu. Kita boleh menggunakan ciri ini untuk mencari persimpangan: 🎜
intersectionBA := intersection(b, a)
fmt.Println(intersectionBA) // [3 4 5 6]
🎜🎜Kaedah 2: Gunakan map🎜🎜🎜Cara lain untuk mencari persimpangan ialah menggunakan map. Berbanding dengan fungsi append, menggunakan map adalah lebih cekap kerana ia boleh menghapuskan elemen pendua dengan kerumitan masa O(n): 🎜rrreee🎜🎜Kes praktikal🎜🎜 🎜Andaikan kita mempunyai dua tatasusunan berikut: 🎜rrreee🎜Gunakan fungsi tambah untuk mencari persimpangan: 🎜rrreee🎜Gunakan peta untuk mencari persimpangan: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan persilangan tatasusunan di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn