The description of the problem
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 fir in a 32-bit integer.
an example
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]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-moves-to-equal-array-elements-ii
The codes for this problem
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class Solution {
public:
int minMoves2(vector<int>& nums) {
int n = nums.size();
sort(nums.begin(), nums.end());
int mid = nums[n/2];
int res = 0;
for (auto num : nums) {
res += abs(num - mid);
}
return res;
}
};
int main()
{
Solution s;
vector<int> nums = {1,2,3};
cout << s.minMoves2(nums) << endl;
return 0;
}
The results
$ ./test
2