Menentukan sama ada satu keping ialah subset yang lain dengan cekap ialah masalah biasa dalam pengaturcaraan. Tanpa pendekatan yang betul, lelaran pada setiap elemen kepingan untuk perbandingan boleh memakan masa.
Penyelesaian yang cekap untuk masalah ini menggunakan struktur data peta . Begini cara ia berfungsi:
<code class="go">package main import "fmt" func subset(first, second []int) bool { set := make(map[int]int) for _, value := range second { set[value] += 1 } for _, value := range first { if count, found := set[value]; !found { 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})) // true fmt.Println(subset([]int{1, 2, 2}, []int{1, 2, 3, 4})) // false }</code>
Dalam pendekatan ini:
Penyelesaian di atas juga mengendalikan nilai pendua dengan berkesan. Contohnya, {1, 2, 2} bukan subset {1, 2, 3, 4} kerana kepingan kedua mengandungi hanya satu 2. Jejak kod dikira dalam peta, memastikan bahawa kepingan pertama tiada lagi pendua elemen daripada kepingan kedua.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Menentukan sama ada Satu Slice Integer ialah Subset Satu Lagi dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!