Algorithm 如何从每个排序的列表中选择一个数字,使最小值和最大值之间的差异尽可能小?

Algorithm 如何从每个排序的列表中选择一个数字,使最小值和最大值之间的差异尽可能小?,algorithm,Algorithm,假设有k-列表,其数字的顺序是递增的。从每个列表中选择一个数字,以使输出列表中最高数字和最低数字之间的差异最小: list 1-1,3,5,9,10 list 2-2,4,6,8 list 3-7,11,12,13 输出应为5,6,7 从列表1中选择5,从列表2中选择6,从列表3中选择7 因为该列表中的最高和最低数的差异是2,即7—5考虑有k个列表。 < P>我可以在 O(n*Logk)中解决这个问题,这里 n>代码>是K列表中的总数。 1,为每个列表维护一个指针,从0开始 2、将当前指针视为

假设有k-列表,其数字的顺序是递增的。从每个列表中选择一个数字,以使输出列表中最高数字和最低数字之间的差异最小:

list 1-1,3,5,9,10
list 2-2,4,6,8
list 3-7,11,12,13
输出应为5,6,7

从列表1中选择5,从列表2中选择6,从列表3中选择7


因为该列表中的最高和最低数的差异是2,即7—5考虑有k个列表。

< P>我可以在<代码> O(n*Logk)中解决这个问题,这里<代码> n>代码>是K列表中的总数。

1,为每个列表维护一个指针,从0开始

2、将当前指针视为您选择的数字,更新答案

3、选择数量最少的一个,并将其增加1(只要它没有到达列表的末尾),如果可能,返回到步骤2,否则终止


在第2步和第3步中,使用heap来保持最小数量和最大数量,从而将时间从
O(K)
减少到
O(LogK)

您好,欢迎使用stackoverflow!我们很想帮助你,但你的问题听起来像是家庭作业;如果是,请贴上标签;你能至少表现出你已经试过了吗?像这样,它可能会被关闭为“不是一个真正的问题”这是什么意思“所选列表中的最高数字和最低数字是最小的”?他想最小化(max(x属于S)-min(x属于S)),其中S是所选列表,包含k个元素,分别属于列表1到列表k