有些面试题都会借用求解数组第K小(大)的数来考察对排序算法的熟练度,如果不要求time和storage会有一大堆方法,比如快排、插入排序等等,还可以构建K个元素的最小堆等等实现,如果是面试题重写排序算法浪费时间,这里利用C++ STL和Algorithm库函数去实现,可以快速通过笔试测试,代码如下:
以nums数组为例:
//包含vector 、algorithm等头文件
int K_min(vector<int>& nums,int k){
sort(nums.begin(),nums.end()); //对nums排序
nums.erase(unique(nums.begin(),nums.end()), nums.ens()); //删除nums中重复元素
return (nums.size()<k?-1:nums[k-1]); //若没有第K小元素返回-1
}