# 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.

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

Example:

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]

# Solution

Approach 1: the middle ground is the median.

# Code (Python)

Approach 1:

    def minMoves2(self, nums: List[int]) -> int:
        # the middle ground is the median (for odd length, anywhere between the middle two numbers of even length), because when you pick and move a pivot, half the the numbers each +1 and the other half each -1
        nums.sort()
        median = nums[len(nums) // 2]
        return sum(abs(num - median) for num in nums)

# Code (C++)

Approach 1:

Approach 2: