題目
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;
}
};