每个有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]}
。
我的目标是找出所有可能的 Set 中的 min 和 max 元素,使得 min 和 max 之间的差异最小。
示例 (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) 是最小值 (1) 和最大值 (4) 之间的差值是全局最小值或最小值的集合。
所以我们将输出 3 作为全局最小差值和对应的对,即 (3 4)。如果有多个全局最小值,则将它们全部打印出来。请推荐具有更好时间和空间复杂度的算法。我们不能采用蛮力方法。