1. 问题描述
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
2. 思路
- 初始化一个map[int]int,统计nums1数组中的元素个数。
- 遍历nums1数组。
- 遍历nums2数组,判断nums2中元素是否在map中,如果在,把map置为0,同时追加元素到预先分配的数组中。
3. 代码
func intersection(nums1 []int, nums2 []int) []int {
counterNums1 := map[int]int{}
res := []int{}
for i := 0; i < len(nums1); i++ {
counterNums1[nums1[i]]++
}
for j := 0; j < len(nums2); j++ {
value, ok := counterNums1[nums2[j]]
if ok && value > 0{
counterNums1[nums2[j]] = 0
res = append(res,nums2[j])
}
}
return res
}