【发布时间】:2009-12-02 01:38:21
【问题描述】:
我有两组 A 和 B。
A
--
1
2
6
B
--
1
2
3
4
当我将集合 A 与 B 进行比较时,当集合 B 与 A 进行比较时,我需要将值 6 作为输出,并将值 4 作为输出。
我想知道最好的算法是什么?我写了一个,但它有一个二次复杂度。它基本上迭代一组并在循环内迭代第二组以检查值是否存在。我觉得这效率低下。
上下文
我在 UI 中显示的数据库中有一组值。用户可以删除或添加新项目到列表中,然后按“保存更改”按钮,这会将所有更改保存到数据库。所以在这里我需要将新添加的项目插入到数据库中并删除删除的项目。
所以我通过了第一个集合,其中包含新添加的和已经存在的项目。我加载了另一个集合,它将包含数据库中的所有项目。现在,如果我应用上述算法将 Set A(新列表)与 Set B(数据库列表)进行比较,并获取存在于 SetA 中而不存在于 SetB 中的项目,我会得到所有新添加的项目。然后将 SetB 与 SetA 进行比较,并且 setB 中存在且 SetA 中不存在的所有项目都将被删除。我愿意接受有关更好算法的建议。
任何帮助都会很棒。
【问题讨论】: