【发布时间】:2017-12-13 04:24:11
【问题描述】:
希望你今天过得愉快。
我正在尝试了解执行以下操作的最快方法是什么:
假设我有这两个Arrays:
var firstArray = ["a","b","c"]
var secondArray = ["a","d","e"]
我想得到一个输出:
1)Array 内部 firstArray 但没有 secondArray 的对象。
1)Array 内部 secondArray 但没有 firstArray 的对象。
3)Array 属于firstArray 和secondArray 之间的common 对象。
所以基本上输出是:
1) ["b","c"]
2) ["d","e"]
3)["a"]
这里的主要问题是了解这样做的最有效方法是什么。非常感谢!
【问题讨论】:
-
数组是否排序?它们是否包含字符串,或者这只是一个示例?如果它们不是字符串,可以将对象与
<进行比较吗? -
将数组转换为集合,然后使用
subtracting和intersection -
如果元素的顺序对您来说并不重要,并且如果(如您的示例中)所有元素都是唯一的,您可能需要考虑使用集合代数而不是有序集合类型,例如作为
Array。例如。在 Swift 中使用Set允许您将subtract(_:)用于 1) 和 2),将intersection(_:)用于 3),它们都使用 O(1)(摊销)查找来比较集合之间的元素(与例如使用Array的 O(n)contains(_:)(带有Equatable元素)来查找某些指定元素的存在)。见Set。
标签: ios arrays swift performance sorting