给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。
示例:
输入:
[1,2,3]
输出:
3
解释:
只需要3次移动(注意每次移动会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
/**
* @param {number[]} nums
* @return {number}
*/
var minMoves = function(nums) {
let newArr = nums.sort((a,b)=>{
return a-b
})
let min = newArr[0];
let re = 0
for ( let i = 0 ; i< nums.length;i++){
re += nums[i]
}
return re-min*nums.length
};
性能分析
看了下评论区大佬的写法
var twoSum = function (nums, target) {
let map = new Map();
for (let i = 0; i < nums.length; i++) {
let dif = target-nums[i]
if (map.has(dif)) {
return [map.get(dif), i]
}
map.set(nums[i], i);
}
};
两次写法的对比