我需要一个数据结构来表示具有以下非标准操作的一组序列(全部相同,已知长度):
在集合中找到两个恰好在一个索引处不同的序列。(或确定不存在这样的对。)
如果N
是序列的长度和序列M
的数量,则有一个明显的O(N*M*M)
算法。我想知道是否有更有效地解决这个问题的标准方法。如果需要,我愿意应用预处理。
如果算法不返回一对,而是返回在同一点不同的所有序列,则加分。
或者,我也对一种解决方案感兴趣,在该解决方案中,我可以有效地检查特定序列在一个索引处是否与集合中的任何序列不同。如果有帮助,我们可以假设在集合中,没有两个序列具有该属性。
编辑:您可以假设N
相当小。我的意思是改进,例如O(log(N)*M*M)
对我的用例没有立即有用的改进。