两个阵列的对称差异

时间:2010-02-18 11:41:05

标签: objective-c algorithm arrays math set

我有两个NSArray个电影对象,叫做DVD和VHS。我想找到这些数组的对称差异。我想知道哪些电影在VHS中购买的不是DVD,哪些电影是DVD但不是VHS。

有人能告诉我是否有快速算法来解决它(最好是C或Objective-C)?如果我使用字典,它更快/更容易解决吗?这种问题叫什么(或者只是“对称差异”)?

感谢。

3 个答案:

答案 0 :(得分:2)

使用NSSet而不是NSArray可能会获得更好的结果,具体取决于您是否要在列表中允许重复。

NSSet为您提供intersectsSet:等方法,可以为您提供所需的内容。

如果您需要联合功能,可以使用NSMutableSet

答案 1 :(得分:1)

如果您需要VHS减去DVD,并且DVD减去两个不同阵列中的VHS,请使用-removeObjectsInArray:

如果你需要在同一个数组中,对它们进行排序并尝试在ObjC中重新实现this algorithm

答案 2 :(得分:0)

尝试使用电影标题(MergeSort)对两个数组进行排序,然后合并它们并修改合并功能,以便打印出唯一的非常见元素。