215. Kth Largest Element in an Array
来源:互联网 发布:海岛奇兵数据库 编辑:程序博客网 时间:2024/05/13 03:48
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
class Solution {public: int findKthLargest(vector<int>& nums, int k) { arrangeRight(nums,0,nums.size()-1,k);//将前k个大数放在nums右边,O(n). quickSort(nums,nums.size()-k,nums.size()-1); //对前k个数快排。O(klogk). return nums[nums.size()-k]; } void arrangeRight(vector<int>& nums, int start, int end, int k){ if(start >= end) return; int key = nums[start]; int i = start, j = end; while(i!=j){ while(j>i && nums[j] >= key) --j; swap(nums,i,j); while( i<j && nums[i] <= key) ++i; swap(nums,i,j); }//a[i] = key if(k == (nums.size() - i)) return; if(k < (nums.size() - i)) arrangeRight(nums,i+1,end,k); if(k > (nums.size() - i)) arrangeRight(nums,start,i-1,k-(nums.size()-i)); } void quickSort(vector<int>& nums, int start, int end){ if(start >= end) return; int key = nums[start]; int i = start, j = end; while(i!=j){ while(j>i && nums[j] >= key) --j; swap(nums,i,j); while( i<j && nums[i] <= key) ++i; swap(nums,i,j); } quickSort(nums,start,i-1); quickSort(nums,i+1,end); } void swap(vector<int> &v,int a,int b){ int t = v[a]; v[a] = v[b]; v[b] = t; } };
Solution explained:点击打开链接
0 0
- 215.Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- static 的理解
- 页面表单验证(正则表达式验证邮箱,正则表达式验证身份证,正则表达式验证手机号)
- 理解Java_GC:时机、对象、行为、算法
- PyCharm 教程(五)断点 调试
- 排序算法-快速排序
- 215. Kth Largest Element in an Array
- C++ STL 学习笔记 函数对象
- ==和.equal(
- MVP + Retrofit
- Java I/O笔记
- 快速排序算法
- 操作系统(十)----死锁的产生
- Android之广播机制
- PyCharm 教程(六)自定义文件模板