【发布时间】:2013-08-09 17:07:03
【问题描述】:
我必须编写一个程序才能在两个数组之间找到相同的数字。 问题是我必须以最优化的方式来尊重一些约束:
-如果 A[i]=B[w] and A[j]=b[x] and i
-这些数字之间的最大距离必须为k(由输入给出);
-我必须使用最大 O(k) 空间来实现优化搜索;
-数字在每个数组中仅出现一次(如集合)。
我正在考虑用第一个数组的 k 个元素构建一个平衡的 RBTree,以优化搜索过程,但我怀疑它需要的空间(我认为它不是 O(k),因为指针和颜色标记)。
有人对这个问题有更好的了解吗?
编辑:我会把我的例子放在这里更清楚:
- 阵列 A:3 7 5 9 10 15 16 1 6 2
- 阵列 B:4 8 5 13 1 17 2 11
- 常数 k = 6
- 输出:5 1 2
Edit2:在输出中,数字必须以与它们在数组中相同的顺序出现。
【问题讨论】:
-
i 和 j 是什么关系? (以及 w 和 x)“这两个数字之间的距离”是什么意思?
-
没有关系,它们是两个通用索引,我们有 A[i]=B[w] 和 A[j]=B[x]。对于找到的所有常见数字都是如此。对于这两个数字之间的距离,我的意思是假设我们找到一个公共数字,下一个公共数字将在“数组中找到的数字的索引”+ k 常数处最大,并且不一定相同。例如:32 1 15 6 7 18 9 12 35 | 10 2 1 5 8 21 22 7 101 | 1 和 7 是常见的数字,按相同的顺序放置在不同的距离,但例如放置在小于 k=10 的距离处。
-
抱歉,我完全不清楚。也许您可以稍微改写问题和/或添加一个数字示例+所需的结果? UPD:我看到你还不能更新你的 Q。也许我应该将您的示例添加到 OQ 中?
-
我已将示例添加到OQ中,请见谅。
-
好的,谢谢 ;-) 现在更清楚了吗?你有什么建议吗?
标签: arrays search optimization data-structures