leetcode453_Minimum_moves_to_Equal_array

来源:互联网 发布:java图形小程序代码 编辑:程序博客网 时间:2024/06/05 00:22

其实我很想说这就是一道数学问题

很多人都能想到的思路就是,每次把数组中除最大元素之外的元素依次加一,这样最后就能达到元素全部相等的结果了。
但是换一种思路来考虑问题呢?
我们可以把n - 1各元素加一之后再全部减一 [1,2,3] –> [2,3,3] –>[1,2,2] 这就是把数组最大元素减一的结果。这样问题就转化为了,使一个数组中的元素都减小到最小元素值,所以move的次数就是每个元素和最小元素min的差值得总和。

public class leetcode453_Minimum_moves_to_Equal_array {    public static void main(String[] args) {        // TODO Auto-generated method stub    }     public static int minMoves(int[] nums) {           if(nums.length == 0){               return 0;           }            if (nums == null){               return 0;           }           int min = nums[0];           for (int i : nums) {               min = Math.min(min, i);           }           int result = 0;           // 已经找到了数组里面最小的元素了            for (int i : nums) {               result += (i - min);           }         return result;     }}