两个数组的交集 II
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
1、常规解法
func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
var repeatNum:[Int] = []
if nums1.isEmpty || nums1.count == 0 || nums2.isEmpty || nums2.count == 0 {
return repeatNum
}
let sortNums1 = nums1.sorted()
let sortNums2 = nums2.sorted()
var i = 0
var j = 0
while (i < sortNums1.count && j < sortNums2.count) {
if sortNums1[i] < sortNums2[j] {
i += 1
} else if sortNums1[i] > sortNums2[j] {
j += 1
} else {
repeatNum.append(sortNums1[i])
i += 1
j += 1
}
}
return repeatNum
}
2、利用map,字典解法
func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
var res = [Int]()
var a = 0, b = 0
var nums1 = nums1.sorted(), nums2 = nums2.sorted()
while a < nums1.count && b < nums2.count {
if nums1[a] == nums2[b] {
res.append(nums1[a]) a += 1 b += 1
} else if nums1[a] < nums2[b]{
a += 1
} else {
b += 1
} }
return res
}