462.最小操作次数使数组元素相等 II(中等)
数学证明:中位数为最佳选择
思路
-
看到这道题的时候,第一反应无非是利用「平均值」或是「中位数」,很不幸,我一开始选择平均值的思路,结果错了。
-
接下来证明 中位数为最佳选择 的合理性。
代码
class Solution {
public:
int minMoves2(vector<int>& nums) {
int n = nums.size();
sort(nums.begin(), nums.end());
int idx = n / 2;
int ans = 0;
for(int i=0; i<n; ++i){
ans += abs(nums[i] - nums[idx]);
}
return ans;
}
};