453. Minimum Moves to Equal Array Elements

来源:互联网 发布:windows电脑唯一标识 编辑:程序博客网 时间:2024/05/21 09:32

Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.

Example:

Input:[1,2,3]Output:3Explanation:Only three moves are needed (remember each move increments two elements):[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

       每次使其中n-1个元素加一,反过来则使其中的一个元素减一,每次只能使其中的一个元素减1,最后形成的新数组就是[min,min,min...min]。因此先求出数组中的min,每个元素与min之间的差总和即为最后的结果。

public class fuzhi {    public int minMoves(int[] nums){  int min=nums[0];  int num=0;  for(int i =1;i<nums.length;i++){  if(nums[i]<min){  min=nums[i];  }  }    for(int i=0;i<nums.length;i++){  int sub=nums[i]-min;  num=num+sub;  }    return num;  }      public static void main(String[] args){    int[] nums= {1,2,3,4};    fuzhi r = new fuzhi();     System.out.println(r.minMoves(nums));    }}


0 0
原创粉丝点击