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

Posted airycode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 最小移动次数使数组元素相等的主要内容,如果未能解决你的问题,请参考以下文章

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

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

(Java) LeetCode 453. Minimum Moves to Equal Array Elements —— 最小移动次数使数组元素相等

leetcode打卡--453. 最小操作次数使数组元素相等[关于数学的等效替代法]

Leetcode刷题100天—453. 最小操作次数使数组元素相等—day72

Leetcode刷题100天—453. 最小操作次数使数组元素相等—day72