例如,array a[]= {1,1,10}
,我们需要找到 'x' 这样|x-1|+|x-1|+|x-10|
是最小值。
这里,x 是 1。
可以用贪心的方法解决吗,比如取平均值或其他方法?
注意:取平均值不起作用,why?
我只能想出O(nlogn)
解决方案(二分搜索),还有其他类似 dp 的方法吗?
提前致谢!
这是一个非常简单的问题(不要感到被冒犯:至少,如果你知道答案很简单):
如果您的物品数量为奇数,那么中间的物品将是您的最佳选择。
如果你有一个偶数,那么中间两个之间的任何数字都将同样是最佳的。
所以不需要数值计算,只需要排序:)
说明:移动结果数字将会改变每个abs(x-x1)
数量相同,但符号不同:有些增加,有些减少。
从中心点(在奇怪的情况下)开始,还会有一个递增的abs
当向任一方向移动时;而当在两个中心点之间移动时(在偶数情况下),将会有同样多的abs
每个标志。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)