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

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

示例:

输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]

思路:

设加x次,加到最后,每个数都为y

sum:数组元素的和

min:数组中最小的元素

n:数组中元素的个数

则有: 

sum+(n-1)*x = n*y(式1)

y = min+x(式2)

得:x = sum-n*min

class Solution { public int minMoves(int[] nums) { int sum = 0; int min =nums[0]; for (int i=0;i<nums.length;i++) { sum+=nums[i]; } for (int i=1;i<nums.length;i++) { min = Math.min(min,nums[i]); } return sum-nums.length*min; }}

  

 

 

 

 

class Solution { public int minMoves(int[] nums) { if (nums.length == 0)return 0; int min = nums[0]; for (int n:nums) { min = Math.min(min,n); } int res = 0; for (int n:nums) { res+=n-min; } return res; }}

  

相关文章