使用map来解决这个问题。我们可以遍历第一个数组,将元素存储在map中,并记录它们的出现次数。然后再遍历第二个数组,检查元素是否在map中出现,如果出现则将该元素加入结果中。最后返回结果即可。
以下是该算法的详细思路和示例代码:
遍历数组nums1,使用map记录每个元素出现的次数。
遍历数组nums2,检查每个元素是否在map中出现,若出现则将该元素加入结果中。
返回结果数组。
func intersection(nums1 []int, nums2 []int) []int {
numCount := make(map[int]bool)
var result []int
// 遍历nums1,记录元素出现情况
for _, num := range nums1 {
numCount[num] = true
}
// 遍历nums2,若元素在map中出现则加入结果
for _, num := range nums2 {
if numCount[num] {
result = append(result, num)
numCount[num] = false // 避免重复加入相同元素
}
}
return result
}