解析
-
数组中元素是可以重复的
-
如果重复的元素是交集中的元素,那么在交集中要有这些元素
算法
-
创建一个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 }