最小化数组的无序系数(差值的绝对值之和)
Posted
技术标签:
【中文标题】最小化数组的无序系数(差值的绝对值之和)【英文标题】:minimizing disorder coefficient of an array (sum of absolute values of differences) 【发布时间】:2017-11-01 18:36:33 【问题描述】:我遇到了波兰奥林匹克运动会的一个问题:
每个数组a1,a2,a3 ... a4
都有它的无序系数K,等于|a[1]-a[2]| + |a[2]- a[3]| + |a[3]-a[4]| ... |a[n-1] -a[n]|
。对于每个元素,我们应该计算可以通过与数组的任何其他元素交换位置来获得的最小 K。
例子:给定一个数组7 4 5 2 5
。
该数组的初始无序系数为
10 = |7-4|+|4-5|+|5-2|+|2-5|
第一个元素与第四个元素交换后获得最小无序系数:|2-4|+|4-5|+|5-7|+|7-5| = 7
。我们需要为数组的所有元素计算这个。复杂度应该是 O(nlogN)。
【问题讨论】:
如果列表变成这样的情况 - 2 4 5 5 7 在交换一些元素后,你得到的无序系数是 5 .. 这是你可以按顺序得到的最低值吗?单词排序数组将具有最小的无序系数 【参考方案1】:只需对您的数组进行排序并计算此排序数组的无序系数。是数组的MDC。
它是如何工作的。 您需要将差异最小的元素放在一起。排序会给出这个结果。
也试图证明这个理论:) 明天会更新。
【讨论】:
以上是关于最小化数组的无序系数(差值的绝对值之和)的主要内容,如果未能解决你的问题,请参考以下文章
2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 由于答案可能非常大,请返回对 109