有n数组的k大小。找到所有可能的数字组的最大值和最小值之间的最小差值
a0[0],a0[1],......a0[k-1]
a1[0],a1[1],......a1[k-1]
.
.
.
an-1[0],an-1[1], .... an-1[k-1]
根本没有重复,所有的数组排序。
现在,一组大小n通过从每个数组中随机取任意值来构造。 ,例如一个这样的组可以是{a0[0],a1[3],a2[2],.... an-1[k-1]}
。
我的目标是找出所有可能集中的最小和最大元素,使得最小值和最大值之间的差值最小。
实施例(K = 3,N = 3)
[3 7 11]
[1 12 15]
[4 19 21]
所以数学会有27组这样
(3 1 4) (3 12 4) (3 15 4)
(3 1 19) (3 12 19) (3 15 19)
(3 1 21) (3 12 21) (3 15 21)
(7 1 4) (7 12 4) (7 15 4)
(7 1 19) (7 12 19) (7 15 19)
(7 1 21) (7 12 21) (7 15 21)
(11 1 4) (7 12 4) (11 15 4)
(11 1 19) (7 12 19) (11 15 19)
(11 1 21) (7 12 21) (11 15 21)
计算所有这些组,我们可以得出这样的结论的最小值和最大值后(3 1 4)是min(1)和max(4)之差为全局最小值或最小值的集合。因此,我们将输出3作为全局最小差异和相应的对(3 4)。如果有多个全局最小值,则将它们全部打印出来。请提出更好的时间和空间复杂度的算法。我们不能采取暴力手段。
编辑:不要做药的孩子。在这里留下我的旧评论,因为它非常愚蠢:“在这一天的这个时候我非常密集,所以我可能是错的 - 但是如果没有重复,只需找到最小差异,这在O(n * k) (+ O(n * k))因此,所有由每对(+ pairsFound * O(n * k))之间的数组组成的集合。 = O(n * k)?“ – 2013-04-09 19:04:31
如果我正确地理解了这个问题,如果我将K个大小的N数组连接到一个数组,然后对它们进行排序,那么我选择第一个P麻木(Set = P大小),我可以得到Pn-p0的最小值? – dekdev 2013-04-09 19:08:48
你认为'n'有多大? – 2013-04-09 19:13:56