【解题思路】
移动次数最少的目标数字,就是数组的中位数。先对数组进行排序,找出其中位数,然后计算每个数字到中位数需要操作的次数,累加次数得到结果。
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;
}
}