给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
解法1:
func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
guard nums1.count > 0 && nums2.count > 0 else {
return []
}
var nums2 = nums2
var array = [Int]()
for item in 0..<nums1.count {
for (index,value) in nums2.enumerated().reversed() {
if(value == nums1[item]){
array.append(nums1[item])
nums2.remove(at: index)
break
}
}
}
return array
}
解法2:
func intersection(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
guard nums1.count > 0 , nums2.count > 0 else { return [] }
var array: [Int] = []
var s1: Set<Int> = Set()
var s2: Set<Int> = Set()
nums1.forEach { item in
s1.insert(item)
}
nums2.forEach { item in
s2.insert(item)
}
if s1.count > s2.count {
s2.forEach { item in
if s1.contains(item) {
array.append(item)
}
}
} else {
s1.forEach { item in
if s2.contains(item) {
array.append(item)
}
}
}
return array
}