Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-10-27 08:11:31
asal
937 orang telah melayarinya

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>
Salin selepas log masuk

Output

true
false
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan