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]
1 class Solution { 2 public: 3 int minMoves2(vector<int>& nums) { 4 int len = nums.size(); 5 int sum = 0; 6 sort(nums.begin(), nums.end()); 7 for (int i = 0;i < len;i++) 8 { 9 if (nums[i] != nums[len / 2]) 10 { 11 sum += abs(nums[i] - nums[len / 2]); 12 } 13 } 14 return sum; 15 } 16 };