453. 最小移动次数使数组元素相等

题目

给定一个长度为 n 的空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

示例1:

1
2
3
4
5
6
7
8
9
10
输入:
[1,2,3]

输出:
3

解释:
只需要3次移动(注意每次移动会增加两个元素的值):

[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]

提示:

  • n == nums.length
  • 1 <= nums.length <= 10……5
  • -10^9 <= nums[i] <= 10^9
  • 答案保证符合 32-bit 整数

解法

解法一:

这个问题就是数组中最小的值,几次之后才能变成和最大的一样。

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int minMoves(int[] nums) {
int min = Integer.MAX_VALUE;
int sum = 0;
for (int i = 0;i < nums.length;i++) {
sum += nums[i];
if (min > nums[i]) {
min = nums[i];
}
}
return sum - nums.length * min;
}
}
0%