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;
    }
}

  

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

上一篇:软件测试_Loadrunner_APP测试_性能测试_脚本优化_脚本回放


下一篇:【CC2530入门教程-01】IAR集成开发环境的建立与项目开发流程