数组中第K大的数
2016-07-22 14:09
393 查看
输入:array ,1<=k<=n-1
输出:第k大的数
思路:quick sort partition,O(n)
int partition(vector<int>&nums, int s, int e){ int idx = s + rand() % (e - s + 1); swap(nums[idx], nums[e]); int big = s - 1; for (idx = s; idx<e; ++idx){ if (nums[idx]>nums[e]){ ++big; if (big != idx) swap(nums[idx], nums[big]); } } ++big; swap(nums[big], nums[e]); return big; } int findKthLargest(vector<int>& nums, int k) { int s = 0, e = nums.size() - 1; int idx = partition(nums, s, e); while (idx != k - 1){ if (idx>k - 1) e = idx - 1; else s = idx + 1; idx = partition(nums, s, e); } return nums[idx]; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 巧妙利用PARTITION分组排名递增特性解决合并连续相同数据行
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析