给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使 n - 1 个元素增加 1。
示例:
输入:
[1,2,3]
输出:
3
解释:
只需要3次移动(注意每次移动会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
解
每次移动一个数对其它所有数加1,相当于该数本身减1。所以问题可以转化为将数组中的所有数值需要减去多少,才能使所有值都为最小数。
public int minMoves(int[] nums) {
int min_num = Arrays.stream(nums).min().getAsInt();
int res = 0;
for(int i = 0; i < nums.length; i++)
res += (nums[i]-min_num);
return res;
}
网友评论