两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
方法一
执行用时28ms ,击败81%提交 ,
func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
var result: [Int] = []
var num:[Int: Int]? = [:]
for item in nums1 {
if num?[item] != nil {
num![item] = num![item]! + 1
} else {
num![item] = 1
}
}
for item in nums2 {
if num?[item] != nil {
result.append(item)
num![item] = (num?[item])! - 1
if num![item] == 0 {
num?[item] = nil
}
}
}
return result
}
方法二
// 执行用时24ms ,击败88%提交
func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
let a = nums1.sorted()
let b = nums2.sorted()
var result: [Int] = []
var i = 0
var j = 0
while (i < a.count && j < b.count) {
let n1 = a[i]
let n2 = b[j]
if (n1 == n2) {
result.append(n1)
i += 1
j += 1
} else if (n1 < n2) {
i += 1
} else {
j += 1
}
}
return result
}
网友评论