swift实现两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
进阶:
如果给定的数组已经排好序呢?你将如何优化你的算法?
如果nums1 的大小比nums2 小很多,哪种方法更优?
如果nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
方案一
func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
var record = [Int]()
var intersects = [Int]()
for i in 0..<nums1.count {
let temp = nums1[i]
for j in 0..<nums2.count {
if temp == nums2[j] {
var exist = false
if record.contains(j) {
exist = true
}
if !exist {
record.append(j)
intersects.append(temp)
break
}
}
}
}
return intersects
}
}
方案二
class Solution {
func intersect(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
var num1 = nums1.sorted(by: <)
var num2 = nums2.sorted(by: <)
var i = 0
var j = 0
var num3 = Array<Int>()
while i < num1.count && j < num2.count {
if num1[i] < num2[j] {
i = i + 1
} else if num1[i] > num2[j] {
j = j + 1
} else {
num3.append(num1[i])
i = i + 1
j = j + 1
}
}
return num3
}
}
网友评论