Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menentukan dengan cekap sama ada satu keping integer ialah subset yang lain dalam Go menggunakan peta?

Bagaimanakah saya boleh menentukan dengan cekap sama ada satu keping integer ialah subset yang lain dalam Go menggunakan peta?

Barbara Streisand
Barbara Streisandasal
2024-10-27 08:11:31831semak imbas

How can I efficiently determine if one slice of integers is a subset of another in Go using a map?

Semak Subset dengan Kepingan Integer dalam Go menggunakan Peta

Menentukan sama ada satu keping integer ialah subset daripada yang lain memerlukan penyelesaian yang cekap di luar yang mudah lelaran. Artikel ini memperkenalkan penyelesaian yang menggunakan peta untuk mengoptimumkan semakan.

Definisi Subset

Sekeping dianggap sebagai subset yang lain jika ia mengandungi semua elemen yang terakhir, dengan kemungkinan kemasukan pendua. Sebagai contoh, {1, 2, 3} ialah subset {1, 2, 3, 4}, manakala {1, 2, 2} bukan subset {1, 2, 3, 4}.

Pelaksanaan Berasaskan Peta

Penyelesaian yang disediakan menggunakan peta untuk menentukan dengan cekap sama ada hirisan ialah subset. Ia membina peta daripada kepingan kedua, dengan kiraan setiap elemen sebagai nilai. Selepas itu, ia berulang melalui kepingan pertama dan mengesahkan kehadiran setiap elemen dalam peta. Jika semua elemen ditemui dengan pendua yang mencukupi, kepingan pertama dianggap sebagai subset.

Kod Contoh

<code class="go">import "fmt"

// subset returns true if the first array is completely
// contained in the second array. There must be at least
// the same number of duplicate values in second as there
// are in first.
func subset(first, second []int) bool {
    set := make(map[int]int)
    for _, value := range second {
        set[value]++
    }

    for _, value := range first {
        if count, ok := set[value]; !ok {
            return false
        } else if count < 1 {
            return false
        } else {
            set[value] = count - 1
        }
    }

    return true
}

func main() {
    fmt.Println(subset([]int{1, 2, 3}, []int{1, 2, 3, 4}))
    fmt.Println(subset([]int{1, 2, 2}, []int{1, 2, 3, 4}))
}</code>

Output

true
false

Kesimpulan

Penyelesaian berasaskan peta ini dengan cekap menentukan sama ada satu hirisan integer ialah subset daripada yang lain, mengendalikan potensi nilai pendua. Ia menyediakan pendekatan yang dioptimumkan untuk menyelesaikan masalah biasa ini dalam Go.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menentukan dengan cekap sama ada satu keping integer ialah subset yang lain dalam Go menggunakan peta?. 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