哈希表 - 两个数组的交集

40 阅读1分钟

哈希表 - 两个数组的交集

这里我们以力扣349题为例,讲讲如何求解两个数组的交集。

image.png 在卡哥的视频讲解中,一直说到用集合、数组、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
}

唯一需要注意的是,如果元素存在哈希表中,必须删除哈希表中对应的元素键值对