
【解题思路】
移动次数最少的目标数字,就是数组的中位数。先对数组进行排序,找出其中位数,然后计算每个数字到中位数需要操作的次数,累加次数得到结果。
class Solution {
public int minMoves2(int[] nums) {
int ans = 0;
Arrays.sort(nums);
int len = nums.length;
int num;
if(len % 2 == 0)
{
num = (nums[len/2 - 1] + nums[len/2])/2;
}
else
{
num = nums[len/2];
}
for(int i = 0; i < len; i++)
{
ans += Math.abs(nums[i] - num);
}
return ans;
}
}
最小移动次数:寻找数组中位数的高效算法
本文介绍了一种解决寻找数组中位数所需最少移动次数问题的方法。通过首先对数组排序,确定中位数位置,然后计算每个元素到中位数的距离并累加,得出最小移动次数。

被折叠的 条评论
为什么被折叠?



