【发布时间】:2014-01-27 19:21:27
【问题描述】:
我有两个集合(它们恰好是数组,但我认为这并不重要):L 和 R。它们都已排序,现在我想比较它们。我想最终得到两个集合:一个用于每个输入数组,其中包含不在另一个集合中的项目。
我可以从L 中取出第一项,然后搜索R,如果没有匹配项,则将其添加到我的“唯一”集合中(Lu)。但这效率极低,我预计在不久的将来会处理一些非常大的集合。
我想可能会“玩跳房子”:
-
第 1 步:取两个列表,
L和R,并比较每个列表的头部(l :: L和r :: R):分支1:如果
lr,则将l添加到Lu并递归,传入L和r :: R分支2:如果
l>r,则将r添加到Ru并递归,传入l :: L和R分支3:如果
l=r,则递归,传入L和R
第二步:返回
Lu和Ru
我可以编写这个函数,但在我努力之前,我想知道是否已经存在一个可以为我做这个的函数。这似乎是一个不常见的场景,我总是宁愿使用现有的解决方案来滚动自己的解决方案。
(另外,如果这个算法有更好识别的名字,我想知道它叫什么。)
【问题讨论】:
标签: f# list-comparison