LeetCode453-最小移动次数使数组元素相等

题目链接

英文链接:https://leetcode.com/problems/minimum-moves-to-equal-array-elements/

中文链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/

题目详述

给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 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 - 1 个元素增加 1,相当于对 1 个元素减 1。
  • 故只需要找到最小的元素 min,让其它元素减小到 min 即可。
  • 所以结果为 sum{num[i] - min} = sum(nums) - min * n
1
2
3
4
5
6
public class LeetCode_00453 {

public int minMoves(int[] nums) {
return Arrays.stream(nums).sum() - Arrays.stream(nums).min().getAsInt() * nums.length;
}
}