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]

Rust Solution

struct Solution;

impl Solution {
    fn min_moves2(mut nums: Vec<i32>) -> i32 {
        nums.sort_unstable();
        let n = nums.len();
        let median = nums[n / 2];
        nums.into_iter().map(|x| (x - median).abs()).sum()
    }
}

#[test]
fn test() {
    let nums = vec![1, 2, 3];
    let res = 2;
    assert_eq!(Solution::min_moves2(nums), res);
}

Having problems with this solution? Click here to submit an issue on github.