面试题答案
一键面试思路
为了提高删除效率,避免在每次删除时进行线性查找,可以先将 keys
切片转换为 map
,这样在判断某个键是否需要删除时时间复杂度从 O(n) 降低到 O(1)。然后遍历原 map[string]int
,如果键不在需要删除的 map
中,则将其添加到一个新的 map
中,最后将新 map
赋值给原 map
。
代码示例
package main
import "fmt"
func main() {
m := map[string]int{
"a": 1,
"b": 2,
"c": 3,
"d": 4,
"e": 5,
}
keys := []string{"b", "d"}
keySet := make(map[string]bool)
for _, key := range keys {
keySet[key] = true
}
newM := make(map[string]int)
for key, value := range m {
if _, exists := keySet[key];!exists {
newM[key] = value
}
}
m = newM
fmt.Println(m)
}