leetcode453-最小移动次数使数组元素相等

原题

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

示例:

输入:
[1,2,3]

输出:
3

解释:
只需要3次移动(注意每次移动会增加两个元素的值):

[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

解法

思想

根据峡谷相对论,给n-1个数加一,相当于给剩下的那个数减一

代码

class Solution {
    public int minMoves(int[] nums) {
        Integer min = null;
        int sum = 0;
        for(int i=0;i<nums.length;i++) {
            if(min == null || nums[i] < min) {
                min = nums[i];
            }
            sum += nums[i];
        }
        return sum - min*nums.length;
    }
}

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode453-%e6%9c%80%e5%b0%8f%e7%a7%bb%e5%8a%a8%e6%ac%a1%e6%95%b0%e4%bd%bf%e6%95%b0%e7%bb%84%e5%85%83%e7%b4%a0%e7%9b%b8%e7%ad%89/

发表评论

电子邮件地址不会被公开。