给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
来源:力扣(LeetCode)
示例
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]
解析
数组求交集,题目很好懂,
思路
因为给出的数据集
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
建立一个Array长度为1001,存储每个数字的出现次数即可,放在结果数组里,每个数字放的次数等于某个数字在两个输入数组出现次数最少的。
上代码
func intersect(nums1 []int, nums2 []int) []int {
var resu []int
var countArrayA []int = make([]int, 1001)
var countArrayB []int = make([]int, 1001)
if len(nums1) == 0 || len(nums2) == 0 {
return resu
} else {
for i := 0; i < len(nums1); i++ {
countArrayA[nums1[i]] += 1
}
for j := 0; j < len(nums2); j++ {
countArrayB[nums2[j]] += 1
}
for k := 0; k <= 1000; k++ {
if countArrayA[k] > 0 && countArrayB[k] > 0 {
var min = 0
if countArrayA[k] <= countArrayB[k] {
min = countArrayA[k]
} else {
min = countArrayB[k]
}
for l := 0; l < min; l++ {
resu = append(resu, k)
}
}
}
}
return resu
}