找到数组中绝对差的最小总和的数字

find a number for minimum sum of absolute difference in an array

例如array a[]= {1,1,10},我们需要找到'x'使得|x-1|+|x-1|+|x-10|最小。
此处,x 为 1。

可以用贪婪的方法解决吗,比如取平均值或其他什么?
注意:取平均值不起作用,为什么

我只能想出O(nlogn)的解决方案(二分查找),有没有其他类似dp的办法?

提前致谢!

这是一个非常简单的问题(不要觉得被冒犯:至少,如果你知道的话,答案很简单):

如果您的项目数量为奇数,那么中间的项目将是您的最佳选择。

如果您有一个偶数,则中间两个之间的任何数字都同样是最优的。

所以不需要数值计算,只需要排序:)


说明:移动你得到的数字将改变每个 abs(x-x1) 相同的数量,但符号不同:一些增加,一些减少。

从中心点(在奇数情况下)向任一方向移动都会增加一个 abs;而当在两个中心点之间移动时(在偶数情况下),每个符号的 abs 数量相同。