それぞれkサイズのn 個の配列があります。
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のセットが構築されます。たとえば、そのようなセットの 1 つを にすることができます{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) は、最小 (1) と最大 (4) の差がグローバルな最小値または最小値であるセットであると結論付けることができます。
したがって、グローバル最小差として 3 を出力し、対応するペア (3 4) を出力します。複数の大域的最小値がある場合は、それらをすべて出力します。より良い時間と空間の複雑さを持つアルゴリズムを提案してください。力ずくでアプローチすることはできません。