题目
给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。
思路
本题要求,获取最小操作次数,即在满足所有元素均相等的情况下,操作次数最少。
由于本题无法确定最终元素均相等时,对于元素的大小,所以需要从题目中找规律。
我们可以假设:
最小移动次数为 count;
设最终元素均相等时,数组的每一位数 为 fin;
设数组的长度为 N;
设初始数组的总数为sum;
设初始数组中,最小的元素是 min
我们可以得到的关系是:
这个公式的关键点,在于求出 fin 的关系
带入上个公式得到:
化简得到:
代码
public int minMoves(int[] nums) {
        Arrays.sort(nums);
        int min=nums[0];
        int sum=0;
        for(int i=0;i<nums.length;i++){
            sum+=nums[i];
        }
        return sum - (min * nums.length);
    }


















