在大型数组中查找唯一序列

时间:2015-07-09 20:53:39

标签: c# arrays algorithm analysis

对于如下所示的给定位数组(x为1,。为0),我们有一个现有的算法来确定每一行是唯一的:

XXX...
X.XXXX
XX..X.
.XX...

但是,如果行数非常大,性能会受到影响。如果阵列有100万行,那么有人会建议能更好地找到这些唯一行序列的算法吗?

换句话说,这些行:

XXX...
X.XXXX
XX..X.
.XX...
XXX...
X.XXXX
XX..X.
.XX...
XXX...
X.XXXX
XX..X.
.XX...
无论阵列高度有多大,

总是会在第一个数组中显示序列?

1 个答案:

答案 0 :(得分:0)

假设位数组太长,我会这样做:

  1. 将每个位数组转换为数字。
  2. 创建HashSet<int>
  3. 将每个数字放入哈希集中。如果Add返回false,则该号码不是唯一
  4. 现在,您可以从哈希集中删除该数字,也可以使用非唯一数字设置第二个数字。哪种方式更好取决于一般重复的行数。