【发布时间】:2016-03-31 10:06:07
【问题描述】:
问题是要求取任意数量的数字,并找到连续数字之间可能的最大差异总和(使用绝对值)。例如,数字 1 2 和 3 将排列为 3 1 2 得到总和 3(3-1 = 2,并且 1-2 = 1)。
现在我的第一个想法是取列表中最高的数字,然后是最低的数字,并以这种方式排列到最后,但这并不奏效,因为列表的末尾最终会包含所有数字中间积累几乎没有差异。我唯一想到的另一件事是找到每个可能的订单并返回最高的总和,但是如果列表更长,这将花费太长时间,我认为可能有更好的方法。
这里有一些示例输入和输出数字供参考
9 2 5 3 1 -> 21
7 3 4 5 5 7 6 8 5 4 -> 24
任何帮助都将不胜感激,即使它只是为我指明了正确的方向。
【问题讨论】:
-
你如何为
9 2 5 3 1获得21?不应该是14吗? -
@Haris: 重新排列为
2 9 1 5 3,差异为 7 + 8 + 4 + 2 = 21。 -
@MOehm,好的。我以为他给了重新排列的那个。
-
哦,抱歉,我作为样本提供的列表尚未排列,我需要找出算法来排列它们以产生最高总和。
-
您的列表有多大?