题意:
一个数组,最多10000长度,选取一个值,数组所有数字都加/减一个差值,求这个差值的最小值。
思路:
中位数
代码:
/**
* @param {number[]} nums
* @return {number}
*/
var minMoves2 = function(nums) {
nums.sort((a, b) => a - b);
let mid = 0;
let len = nums.length;
if(len % 2 === 1){ // 奇数
mid = Math.round(nums[Math.round((len - 1) / 2)]);
}
else{
mid = Math.round((nums[Math.round((len - 2) / 2)] + nums[Math.round(len / 2)]) / 2);
}
let total = 0;
nums.forEach((obj) => {
total += Math.abs(obj - mid);
});
return total;
};