中位数贪心|
lc462
class Solution {
public:
int minMoves2(vector<int>& nums) {
int m = nums.size() / 2;
ranges::nth_element(nums, nums.begin() + m);
int median = nums[m];
int ans = 0;
for (int x : nums) {
ans += abs(x - median);
}
return ans;
}
};
avg贪心是错的
class Solution {
public:
int minMoves2(vector<int>& nums)
{
int sum=0;
for(auto num:nums)
sum+=num;
int n=nums.size();
int a=sum/n,b=(sum+n)/n;
int x=0,y=0;
for(auto num:nums)
{
x+=(abs(a-num));
y+=(abs(b-num));
}
return min(x,y);
}
};
中位数贪心证明