给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使 n - 1 个元素增加 1。
示例:
输入: [1,2,3] 输出: 3 解释: 只需要3次移动(注意每次移动会增加两个元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
思路:
每次移动使得(n-1)个元素增加1等价于使得1个元素-1所以只需要用所有的数和最小的数进行比较然后统计次数即可
class Solution {
public int minMoves(int[] nums
) {
Arrays
.sort(nums
);
int count
= 0;
for(int i
= 0;i
<nums
.length
;i
++){
count
+= nums
[i
]-nums
[0];
}
return count
;
}
}
题目链接