代码之家  ›  专栏  ›  技术社区  ›  nevan king

两阵列的对称差分

  •  3
  • nevan king  · 技术社区  · 14 年前

    我有两个 NSArray 电影对象的S称为DVD和VHS。我想找出这些数组的对称差异。我想知道哪些电影是用vhs买的而不是用dvd,哪些电影是用dvd买的而不是vhs。

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

    谢谢。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Jasarien    14 年前

    使用 NSSet 而不是 NSArray ,取决于您是否希望在列表中允许重复。

    NSSET 给你的方法就像 intersectsSet: 它应该给你所需要的。

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

        2
  •  1
  •   kennytm    14 年前

    如果在两个不同的数组中需要vhs减去dvd和dvd减去vhs,请使用 -removeObjectsInArray: .

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

        3
  •  0
  •   bhups    14 年前

    尝试使用影片的标题对两个数组进行排序(mergesort),然后合并两个数组并修改合并函数,以便它打印出独特的不常见元素。