哈希表 - 两个数组的交集
这里我们以力扣349题为例,讲讲如何求解两个数组的交集。
在卡哥的视频讲解中,一直说到用集合、数组、map求解,目前我是不太了解这三者的区别。
我的想法就是,随便将一个数组做成哈希表,接下来遍历第二个数组,如果元素在哈希表中,将元素保存下来,并且需要删除哈希表中此元素信息,防止多次append到结果集中。
func intersection(nums1 []int, nums2 []int) []int {
numsS := make(map[int]bool)
res := make([]int, 0)
for _, num := range nums1 {
numsS[num] = true
}
for _, num := range nums2 {
if v, ok := numsS[num]; v && ok {
res = append(res, num)
delete(numsS, num) // 很关键,如果不删除,得到的不是一个去重数组
}
}
return res
}
唯一需要注意的是,如果元素存在哈希表中,必须删除哈希表中对应的元素键值对