【发布时间】:2015-11-12 02:49:11
【问题描述】:
我正在做一些练习编程问题以准备面试。
其中一个问题如下:您正试图找到将数组切成两半的位置,以使每一半之和之间的差异最小化。可以实现的最小差异是多少?
所以
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
我们可以把这个磁带分成四个地方:
P = 1, difference = |3 − 10| = 7
P = 2, difference = |4 − 9| = 5
P = 3, difference = |6 − 7| = 1
P = 4, difference = |10 − 3| = 7
所以我们会返回 1,因为这是最小的差异。
这很容易在 n 平方时间内完成,但是 问题表明它可以在 n 时间内完成,并且有 n 个存储空间。 谁能推荐一个解决方案?我看它的每一种方式,即使有额外的空间,你也必须继续沿着阵列运行。您需要知道整个数组的值,然后才能做出最小切割的选择。
【问题讨论】: