![]() |
1
6
让我们努力取得最好的成绩。如果n是列表的数目,m是列表的长度,那么我们可以得到O(n) logn+n)加上哈希码在不同列表中相等的概率。
*这是重要的一步。对于simlicity,可以将哈希计算为=。。。^(列表[i]<<i)^(列表[i+1]<<(i+1)) 对于那些认为PLINQ可以促进事情,但不是好算法的人来说。PLINQ也可以添加到这里,因为所有的步骤都很容易并行化。 我的代码:
|
![]() |
2
3
除非您正在做一些非常繁重的工作,否则以下简单的代码可能适合您:
(另外,由于LINQ的强大功能,通过向上述代码添加一个.AsParallel()调用,该算法将在多个内核上运行,因此运行速度可能比本线程中提到的复杂、手工调整的解决方案更快。) |
![]() |
3
2
类似的操作将为您提供正确的结果:
|
![]() |
4
2
算法:
我有一些示例代码。缺少的位是:
代码如下:
|
![]() |
5
1
下面是一个潜在的想法(假设值是数字): 实现一个比较器,将每个集合的每个成员乘以其索引,然后求和:
成员校验和:170
|
![]() |
6
1
如果重复数据非常罕见或非常常见,您也可以尝试概率算法。e、 通用航空公司 bloom filter |
![]() |
7
1
写你自己的列表比较器怎么样:
|
![]() |
8
1
如果它们都是一位数,并且元素的数量相同,那么可以将它们放在一起,第一个是123456,并检查数字是否相同。
这是更容易检查重复,如果个别成员可以超过10你将不得不修改这个。
|
![]() |
9
1
这里已经有很多很好的解决方案,但我相信这一个会一直运行得最快 除非 有些数据结构你还没有告诉我们。
如果您有N个非重复项,并且M个项是K个项中的重复项,那么您需要O(N+M+2K)来创建初始哈希映射,最坏的情况是O(M logm)来进行排序(可能更像O(M log(M/K)),O(M)来进行最终的相等性测试。 |
![]() |
10
0
C# 3.0: Need to return duplicates from a List<> 它向您展示了如何从列表中返回重复项。
|
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 6 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 6 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 10 月前 |
![]() |
Paul C · 在维基百科上,将二叉搜索树转换为排序链表的算法是否存在错误? 10 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 10 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 11 月前 |