【发布时间】:2016-01-26 19:40:02
【问题描述】:
假设我们有两个序列 x = {x_i : i elem [1,M]} 和 y = {y_i : i elem [1,N]} 有一个有序的字母表。是否有可能找到满足 x_i = y_j 的最小(如果有)对 (i, j)?
简单的 O(n^2) 时间 O(1) 空间算法只是让您比较任一序列的每个元素,同时跟踪与序列开始的距离的最小差异。
O(n log n) 时间 O(n) 空间算法只是对序列进行排序和比较,同时保持跟踪最小/最大元素。
虽然我想不出线性时间算法,我不确定这个问题会被称为什么。
【问题讨论】:
-
它可以在 O(max{m,n}log(min{m,n})) 中完成,方法是只对较小的列表进行排序,并在迭代较大的列表时对其使用二进制搜索。我很确定它与克服 nlogn 边界的元素区别问题太相似(除非允许散列并且便宜)
标签: string algorithm big-o time-complexity