2 回答
TA贡献1906条经验 获得超3个赞
您必须遍历地图的内容以检查该地图中是否包含某个元素。
例如:
target := []int{30, 30}
for _, v := range myMap {
for _, sub := range v {
if len(sub) == len(target) && sub[0] == target[0] && sub[1] == target[1] {
fmt.Println("yeah")
}
}
}
使用myMapasaa你将不会得到任何输出,而使用myMapasbb你将打印出“Yeah”。
如果最里面的切片变长,您也应该将检查步骤作为一个循环来执行,而不是像那样硬编码。
TA贡献1797条经验 获得超6个赞
地图仅按键索引。这意味着找到aor既便宜又容易(理想情况下是恒定的时间复杂度) b,但更难找到一个值(线性时间复杂度)。
因此,它是几个 for 循环:
func find(searchFor [][]int, m map[string][][]int) bool {
for _, v := range m {
if sliceEq(v, searchFor) {
return true
}
}
return false
}
func sliceEq(a, b [][]int) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
- 2 回答
- 0 关注
- 205 浏览
添加回答
举报