給出一個列表列表(假設有5個列表,要有一個可以工作的實際編號),我可以相對容易地找到所有5個列表共有的項目(請參閱Intersection of multiple lists with IEnumerable.Intersect()),使用下面的代碼的變化:大多數列表共有的項目
var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };
var intersection = listOfLists.Aggregate((previousList, nextList) => previousList.Intersect(nextList).ToList());
現在,讓我們說,intersection
結束了包含0項。很有可能有一些4/5列表共有的對象。我將如何去尋找最有效的方式?
我知道我可以通過4列表的所有組合並保存所有結果,但該方法不能很好地擴展(這最終必須在約40個列表中完成)。
如果沒有項目與4個列表共同,那麼搜索將重複查找3/5列表的共同項目等。從視覺上來看,這可以由網格點列表表示,並且我們正在搜索點最重疊的部分。
任何想法?
編輯: 也許最好是看看每個點,並跟蹤它出現在每個列表中的次數,然後創建一個發生率最高的點列表?
很確定你剛剛回答了你自己的問題。 – RoadieRich
你在每個列表中有獨特的項目嗎? –
實際列表是'Point'列表(在WPF畫布上使用) –