题目
Given a non-empty integer array, find the minimum number of moves required to make all array elements equal, where a move is incrementing a selected element by 1 or decrementing a selected element by 1.
You may assume the array’s length is at most 10,000.
翻译
假设有一个数组,找出最小的操作使得十足满足所有的元素都相等。操作有对选定数加一,对选定的数减一。
可以假设数组长度最大10000
思路
通过分析,可以知道,最后所有的值会被变成中位数T。那么,我们就可以通过计算A[i]到T的距离,累计即可得到操作次数
代码
class Solution {
public:
int minMoves2(vector<int>& nums) {
sort(nums.begin(),nums.end());
int res = 0;
int mid = nums[nums.size()/2];
for(int num:nums){
res += abs(num - mid);
}
return res;
}
};