462. Minimum Moves to Equal Array Elements II

Given a non-empty integer array, find the minimum number of moves required to make all array elements equal, where a move is incrementing a selected element by 1 or decrementing a selected element by 1.ui

You may assume the array's length is at most 10,000.spa

Example:code

Input:
[1,2,3]

Output:
2

Explanation:
Only two moves are needed (remember each move increments or decrements one element):

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

My Solution:blog

public class Solution {
    public int minMoves2(int[] nums) {
        Arrays.sort(nums);
        int baseNum = (int)Math.ceil(nums.length/2);
        int count = 0;
        
        for(int i = 0; i < nums.length; i++){
            if(nums[i] < nums[baseNum]){
                count += nums[baseNum] - nums[i];
            }else if(nums[i] > nums[baseNum]){
                count += nums[i] - nums[baseNum];
            }
        }
        
        return count;
    }
}

Others' Solution:element

public class Solution {
    public int minMoves2(int[] nums) {
        Arrays.sort(nums);
        int i = 0, j = nums.length-1;
        int count = 0;
        while(i < j){
            count += nums[j]-nums[i];
            i++;
            j--;
        }
        return count;
    }
}
相關文章
相關標籤/搜索