Skip to content

Latest commit

 

History

History
31 lines (25 loc) · 819 Bytes

File metadata and controls

31 lines (25 loc) · 819 Bytes

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]

Solutions (Rust)

1. Sort

impl Solution {
    pub fn min_moves2(nums: Vec<i32>) -> i32 {
        let mut nums = nums;
        nums.sort_unstable();
        let mid = nums[nums.len() / 2];

        nums.into_iter().map(|x| (x - mid).abs()).sum()
    }
}