【发布时间】:2018-12-17 15:50:59
【问题描述】:
我收到了一个困扰了我很长一段时间的问题。
问题:
给定一个 N 个整数的排序数组,将数组分成最多 R 个相邻且不重叠的子数组,最多包含 M 个元素,这样我们就可以最小化每个子数组中最大和最小值之间的差异。在最小化每个子数组中的差异之后,输出应该包含任何子数组中的最大差异。
例子:
N = 7
R = 4
M = 3
原始数组:[1,2,3,3,3,5,6]
最优子数组(1种可能情况):[1], [2], [3,3,3],[5,6]
正确输出:1
我正在考虑测试每个可能的值以获得最小差异并在 O(N) 时间内测试每个值,但这会导致运行时比 nlogn 更昂贵。
解决这个问题最节省时间和内存的方法是什么?
【问题讨论】:
-
你想到了什么方法?
-
您应该发布一个您试图避免问题过于宽泛的代码示例 :-)
标签: java algorithm computation-theory