2 回答

TA貢獻1815條經驗 獲得超13個贊
如果您只需要判斷是否存在重復值,而不需要知道哪些值是重復值或有多少個重復值,則用于跟蹤現有值的最有效結構是具有空結構值的映射。
(為了方便起見,粘貼在下面):
package main
import (
? ? "fmt"
)
func hasDupes(m map[string]string) bool {
? ? x := make(map[string]struct{})
? ? for _, v := range m {
? ? ? ? if _, has := x[v]; has {
? ? ? ? ? ? return true
? ? ? ? }
? ? ? ? x[v] = struct{}{}
? ? }
? ? return false
}
func main() {
? ? mapWithDupes := make(map[string]string)
? ? mapWithDupes["a"] = "one"
? ? mapWithDupes["b"] = "two"
? ? mapWithDupes["c"] = "one"
? ? fmt.Println(hasDupes(mapWithDupes)) // prints true
? ? mapWithoutDupes := make(map[string]string)
? ? mapWithoutDupes["a"] = "one"
? ? mapWithoutDupes["b"] = "two"
? ? mapWithoutDupes["c"] = "three"
? ? fmt.Println(hasDupes(mapWithoutDupes)) // prints false
}

TA貢獻1946條經驗 獲得超3個贊
func main() {
m := map[int]int{
1: 100,
2: 200,
3: 100,
4: 400,
6: 200,
7: 700,
}
mNew := make(map[int]int)
for k, v := range m {
if val, has := mNew[v]; !has {
mNew[v] = k
} else {
fmt.Println(k, m[k], ",", val, m[val])
}
}
將映射鍵和值與新映射交換第二個映射不會插入重復鍵,因此您可以找到值
- 2 回答
- 0 關注
- 153 瀏覽
添加回答
舉報