我有两个NSArray
个电影对象,叫做DVD和VHS。我想找到这些数组的对称差异。我想知道哪些电影在VHS中购买的不是DVD,哪些电影是DVD但不是VHS。
有人能告诉我是否有快速算法来解决它(最好是C或Objective-C)?如果我使用字典,它更快/更容易解决吗?这种问题叫什么(或者只是“对称差异”)?
感谢。
答案 0 :(得分:2)
使用NSSet
而不是NSArray
可能会获得更好的结果,具体取决于您是否要在列表中允许重复。
NSSet
为您提供intersectsSet:
等方法,可以为您提供所需的内容。
如果您需要联合功能,可以使用NSMutableSet
。
答案 1 :(得分:1)
如果您需要VHS减去DVD,并且DVD减去两个不同阵列中的VHS,请使用-removeObjectsInArray:
。
如果你需要在同一个数组中,对它们进行排序并尝试在ObjC中重新实现this algorithm。
答案 2 :(得分:0)
尝试使用电影标题(MergeSort)对两个数组进行排序,然后合并它们并修改合并功能,以便打印出唯一的非常见元素。