【发布时间】:2015-07-09 20:53:39
【问题描述】:
对于如下所示的给定位数组(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...
无论数组高度有多大,都将始终在第一个数组中显示序列?
【问题讨论】:
-
它应该是相当简单的 IIRC:取任何行。假设它出现在位置 4 并在 4 之后第一次在位置 55 重复。检查位置 5 和 56 中的行是否相同,所以直到到达与 4 相同的行。重复此操作直到数组结束。
-
您可以使用 linq
group by来完成。另外,也许您可以包括如何定义您的数组是string[]或char[][],这有助于我们稍微了解您所拥有的而不是猜测。 -
@user1952500 这非常简单而且完全没有效率我正在寻找这方面的好算法
-
对于六个元素宽且每个元素只能有两个可能值的数组,该数组只有 64 个可能的选项。如果你有 100 万个,它们不可能都是独一无二的。
-
而且,不,这个问题根本不清楚。最后一句中对“第一个数组”的引用缺乏足够的上下文。我们遗漏了部分问题。
标签: c# arrays algorithm analysis