獨特的項目我有兩個集合(它們恰好是數組,但它並不重要,我認爲):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
a第二Ru
我可以寫這個功能,但我付出努力之前,我在想,如果一個函數已經存在,可以幫我這個忙。這似乎是一個不常見的情況,我總是寧願使用現有的解決方案來滾動我自己的。
(另外,如果有一個更容易識別的名字爲這個算法,我想知道它叫什麼。)
更簡潔,你可以這樣做:'[1; 2; 3] - 設置[2; 3; 4]'。 'set'函數適用於任何序列(列表,數組等)。 – Daniel
很棒的發現!感謝你的分享! – Martin
哦,而不是自己摺疊數組,你可以使用'[| 1; 2; 3; |] |> Set.ofArray' - 與seq和list一起工作的函數也存在。 – Martin