题目描述:给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。您可以假设数组的长度最多为10000。 示例:
题目分析:这道题首先需要分析要如何移动才是最优的,再考虑如何进行移动。一般这种题都是选择一些特殊的数(例如众数、平均数、中位数),这里应该选择中位数,每个元素与中位数距离的和就是最少的移动次数。使用排序算法对数组进行排序,然后求出中位数,遍历整个数组,把它们到中位数的差距累加就是题目要的答案。这里直接使用了 下面举个例子简单验证取中位数是最优的,这里就不使用数学方法证明了。假设有一个整型数组 题解:执行用时: 3 ms 内存消耗: 39.4 MB
题目来源:力扣(LeetCode) |
|
来自: 菜籽爱编程 > 《LeetCode题解》