[LeetCode] Minimum Moves to Equal Array Elements II
阿新 • • 發佈:2018-03-08
vector req ati pos number nat tin num find
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、將數組排序並找出中位數
2、計算數組中每個數與中位數之差。這些差值的和就是要求的結果
class Solution { public: int minMoves2(vector<int>& nums) { sort(nums.begin(), nums.end()); int mid = nums[nums.size() / 2]; int res = 0; for (int i = 0; i < nums.size(); i++) res += abs(nums[i] - mid);return res; } }; // 17 ms
[LeetCode] Minimum Moves to Equal Array Elements II