【LeetCode】215. Kth Largest Element in an Array (2 solutions)

Kth Largest Element in an Array

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.

解法一:

先排序,复杂度O(nlogn)

class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
return nums[nums.size()-k];
}
};

【LeetCode】215. Kth Largest Element in an Array (2 solutions)

解法二:

建最大堆,取k次最大元素。复杂度O(n+klogn)

class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
make_heap(nums.begin(), nums.end());
int ret;
int n = nums.size();
while(k --)
{
pop_heap(nums.begin(), nums.begin()+n);
ret = nums[n-];
n --;
}
return ret;
}
};

【LeetCode】215. Kth Largest Element in an Array (2 solutions)

上一篇:MongoDB(四):数据类型、插入文档、查询文档


下一篇:Android Java层,Native层,Lib层打印Log简介【转】