通过这个题才了解到快速选择算法这个东西,快速选择算法利用了快速排序的思想,求解TopK问题的时间复杂度是O(N),C++库里面也提供了相应的函数。
这个题就是先找出nums数组里面的中位数,然后让所有其他数字都变为中位数。
class Solution {
public:
int minMoves2(vector& nums) {
nth_element(nums.begin(), nums.begin()+nums.size()/2, nums.end());
int target = nums[nums.size()/2];
int ans = 0;
for(int x : nums) ans += abs(x-target);
return ans;
}
};


![Leetcode 462. 最少移动次数使数组元素相等 II [快速选择] Leetcode 462. 最少移动次数使数组元素相等 II [快速选择]](http://www.mshxw.com/aiimages/31/917078.png)
