我有两个集合(它们恰好是数组,但我认为这并不重要):L
和R
. 它们都已排序,现在我想比较它们。我想最终得到两个集合:一个用于每个输入数组,其中包含不在另一个集合中的项目。
我可以从中取出第一项L
,然后进行搜索R
,如果没有匹配项,则将其添加到我的“唯一”集合(Lu
)中。但这是非常低效的,我希望在不久的将来处理一些非常大的集合。
我想可能“玩跳房子”:
第 1 步:取两个列表
L
和R
,并比较每个列表的头部 (l :: L
和r :: R
):分支 1:如果
l
<r
,则添加l
和Lu
递归,传入L
和r :: R
分支 2:如果
l
>r
,则添加r
和Ru
递归,传入l :: L
和R
分支 3:如果
l
=r
,则递归,传入L
和R
第 2 步:返回
Lu
并Ru
我可以编写这个函数,但在我付出努力之前,我想知道是否已经存在一个可以为我做这件事的函数。这似乎是一个不常见的场景,我总是宁愿使用现有的解决方案来滚动自己的解决方案。
(另外,如果这个算法有一个更容易识别的名字,我想知道它叫什么。)