给定两组,如何确定添加或删除的内容?

时间:2017-07-17 01:03:26

标签: swift algorithm sorting

let first =  { 2, 4, 5, 9 };
let second = { 2, 8, 15, 53, 4 }

//removed = 5, 9
//added = 8, 15, 53

确定添加或删除内容的最简单的解决方案是什么?

2 个答案:

答案 0 :(得分:5)

只需使用设置差异。

要确定添加的内容,请执行set subtraction

second.subtracting(first)

要确定删除的内容,请执行

first.subtracting(second)

答案 1 :(得分:1)

用于确定更改的非常简单的算法类似于排序列表的merge algorithm

  • 订购两套
  • 开始在初始元素
  • 处迭代两个有序列表
  • 在循环中,如果两个列表中的当前项目相同,则通过移动到两个列表的下一个元素来跳过它
  • 如果原始集中的项目较小,请将其添加到已删除项目列表中,并将原始集合移动到下一项目
  • 如果新集中的项目较小,请将其添加到已添加项目列表中,然后将新集合移至下一项目
  • 如果您在另一个列表之前到达其中一个列表的末尾,请将其余元素添加到相应的输出列表中(添加或删除)。