题目
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。
示例:
输入:
[1,2,3]
输出:
3
解释:
只需要3次移动(注意每次移动会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
代码模板:
class Solution {
public int minMoves(int[] nums) {
}
}
分析
这道题的思路就是找到最小值,求每个数和最小值的差。那么可以用总和-最小值*nums.length来解决。一个循环里面就可以把求和以及最小值搞定,然后就可以求出该题的答案了。
解答
class Solution {
public int minMoves(int[] nums) {
int result = 0;
if(nums.length ==1){
return result;
}
int min = Integer.MAX_VALUE;
for(int i = 0;i<nums.length;i++){
result = result +nums[i];
if(min > nums[i]){
min = nums[i];
}
}
return result - min *nums.length;
}
}