解析

  • 数组中元素是可以重复的

  • 如果重复的元素是交集中的元素,那么在交集中要有这些元素

算法

  • 创建一个map[int]int

  • 遍历数组1中所有的元素,将他们存在上面的map中,map的键就是元素的值,map的值就是该元素出现的次数

  • 遍历第二个数组的元素,如果该元素在map中的值大于1,就将这个元素存入结果数组中,并将map中的值减1

代码

func intersect(nums1 []int, nums2 []int) []int {
    var resArr []int
    nums1Map := make(map[int]int)
    for _, value := range nums1 {
        nums1Map[value]++
    }
    for _, value := range nums2 {
        if nums1Map[value] > 0 {
            nums1Map[value]--
            resArr = append(resArr, value)
        }
    }
    return resArr
}