【发布时间】:2020-08-22 06:35:35
【问题描述】:
本题取自this link. 给定一个大小为 n 的非空整数数组,找出使所有数组元素相等所需的最小移动次数,其中一次移动是将 n - 1 个元素增加 1。
Example:
Input:
[1,2,3]
Output:
3
说明:
Only three moves are needed (remember each move increments two elements):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
链接有以下工作解决方案:
class Solution {
public int minMoves(int[] nums) {
int total=0, least=numbers[0];
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] < least) {
least = numbers[i];
}
total = total + numbers[i];
}
return total - least * numbers.length;
}
}
这里least 是数组中的最小值,total 是数组中所有元素的总和。
但我想知道total - least * numbers.length 的值是如何解决这个问题的。这是什么公式?有人可以解释一下吗?
【问题讨论】: