36. Minimum Moves to Equal Array Elements II
Given an integer array nums
of size n
, return the minimum number of moves required to make all array elements equal.
In one move, you can increment or decrement an element of the array by 1
.
Test cases are designed so that the answer will fit in a 32-bit integer.
Example 1:
Input: nums = [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]
Example 2:
Input: nums = [1,10,2,9]
Output: 16
Solution: (Sorting and Difference from mid)
class Solution
{
public:
int minMoves2(vector<int> &nums)
{
int n = nums.size();
int mid = n / 2;
int count = 0;
sort(nums.begin(), nums.end());
for (int i = 0; i < nums.size(); i++)
{
int dif = abs(nums[i] - nums[mid]);
count += dif;
}
return count;
}
};
Time Complexity: O(n log n)
Last updated
Was this helpful?