解题思路:
只要找到了中位数,就可以直接认为该数是最少移动次数使数组元素相等的元素,这一点可以通过数学推理证明,证明如下:
代码如下:
class Solution {
public:
int minMoves2(vector<int>& nums) {
int n = nums.size();
if(n == 1) return 0;
sort(nums.begin(), nums.end());
int mid = n / 2;
int ans = 0;
for(int i = 0; i < n; i ++) {
ans += abs(nums[mid] - nums[i]);
}
return ans;
}
};