我有一个newArray
和一个oldArray
,如下所示。如果newArray具有oldArray
中存在的任何项目,那么我想将其从oldArray
中删除。我可以运行两个嵌套的for循环并检测要删除的重复项,但这将是O(n2)
。我想知道是否有更好的处理方法?
我不能使用Set
,因为需要保留订单。
newArray = [2,4,5]
oldArray = [1,2,3,5]
newArray = [2,4,5,1,3] //附加newArray和oldArray。
答案 0 :(得分:1)
也许您毕竟应该使用Set
!
设置遏制速度很快! https://developer.apple.com/documentation/swift/set/1540013-contains
let setFirst = Set(first)
var merge = first
second.forEach { v in
if !setFirst.contains(v) {
merge.append(v)
}
}
print(merge)
次要补充
对于功能风格和紧凑语法的爱好者:
let funcMerge = first + second.filter { !setFirst.contains($0) }