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.
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
代码如下:
class Solution { public: int findKthLargest(vector<int>& nums, int k) { int length = nums.size(); if (length == 1) { return nums[0]; } vector<int> left; vector<int> right; for (int index=1; index<length; index++) { if (nums[index] > nums[0]) { right.push_back(nums[index]); }else{ left.push_back(nums[index]); } } length = right.size(); if (length >=k) { return findKthLargest(right, k); }else if(length == k-1){ return nums[0]; }else{ return findKthLargest(left, k-length-1); } } };
class Solution { public: int findKthLargest(vector<int>& nums, int k) { sort(nums.begin(), nums.end()); reverse(nums.begin(), nums.end()); return nums[k-1]; } };
LeetCode 215:Kth Largest Element in an Array
原文地址:http://blog.csdn.net/sunao2002002/article/details/46039269